r - 填充缺失值
问题描述
data=data.frame("student"=c(1,1,1,1,2,2,2,2,3,3,3,3,4),
"timeHAVE"=c(1,4,7,10,2,5,NA,11,6,NA,NA,NA,3),
"timeWANT"=c(1,4,7,10,2,5,8,11,6,9,12,15,3))
library(dplyr);library(tidyverse)
data$timeWANTattempt=data$timeHAVE
data <- data %>%
group_by(student) %>%
fill(timeWANTattempt)+3
我有“timeHAVE”,我想用上一次 +3 替换丢失的时间。我展示了我的 dplyr 尝试,但它不起作用。我寻求 data.table 解决方案。谢谢你。
解决方案
你可以试试。
data %>%
group_by(student) %>%
mutate(n_na = cumsum(is.na(timeHAVE))) %>%
mutate(timeHAVE = ifelse(is.na(timeHAVE), timeHAVE[n_na == 0 & lead(n_na) == 1] + 3*n_na, timeHAVE))
student timeHAVE timeWANT n_na
<dbl> <dbl> <dbl> <int>
1 1 1 1 0
2 1 4 4 0
3 1 7 7 0
4 1 10 10 0
5 2 2 2 0
6 2 5 5 0
7 2 8 8 1
8 2 11 11 1
9 3 6 6 0
10 3 9 9 1
11 3 12 12 2
12 3 15 15 3
13 4 3 3 0
我包括了连续n_na
计数的小帮手。NA
然后第二个 mutate 将 NA 的数量乘以 3,并将其添加到'sNA
之前的第一个非元素NA
推荐阅读
- reporting-services - 向 SSRS 2016 添加自定义安全性后,在站点设置安全性中添加用户/域给出错误
- python - 通过套接字(python)发送包含文件的字典
- visual-studio - Visual Studio 中的 ASP.Net 核心自定义 docker 卷挂载
- shell - $(var)、"$(var)"、$((var))、((condition)) 等之间的 shell 有什么区别?
- django - haystack 无法解析查询
- angular - Angular 6 - [ngModel] 数据值 - 未定义标识符名称
- pointers - Golang 中 []*Users 和 *[]Users 的区别?
- css - HTML - CSS(标题)
- java - com.fasterxml.jackson.databind.exc.InvalidDefinitionException 用于用户实体上的一些 REST 操作
- java - Java主线程发送信号,然后等待其他非同步线程