Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于其他列的最后一个非缺失值创建列_R_Dplyr - Fatal编程技术网

R 基于其他列的最后一个非缺失值创建列

R 基于其他列的最后一个非缺失值创建列,r,dplyr,R,Dplyr,与此非常相似,我尝试通过按组查找数据帧中现有变量的最后一个非缺失值来填充新变量,理想情况下使用dplyr/zoo。我只想保留最后一个值,而不仅仅是重写错误,考虑下面的最小例子: df1 <- data.frame(ID = c(1, 1, 1, 2, 2,2), date = c(1,2,3,1,2,3), var1 = c('a', '', 'b', '','c', '')) df2 = ## R-comman

与此非常相似,我尝试通过按组查找数据帧中现有变量的最后一个非缺失值来填充新变量,理想情况下使用dplyr/zoo。我只想保留最后一个值,而不仅仅是重写错误,考虑下面的最小例子:

df1 <- data.frame(ID   = c(1, 1, 1, 2, 2,2),
                  date = c(1,2,3,1,2,3),
                  var1 = c('a', '', 'b', '','c', ''))

df2 = ## R-commands to get:
df2 <- data.frame(ID   = c(1, 1, 1, 2, 2,2),
                  date = c(1,2,3,1,2,3),
                  var1 = c('b', 'b', 'b', 'c','c', 'c'))

df1使用
dplyr

library(dplyr)

df1 %>% 
 group_by(ID) %>% 
 mutate(var1 = last(var1[var1 != '']))
这就给了,

#一个tible:6 x 3
#组别:ID[2]
ID日期变量1
11b
2 1 2 b
3 1 3 b
4 2 1 c
5 2 c
6 2 3 c

使用
dplyr

library(dplyr)

df1 %>% 
 group_by(ID) %>% 
 mutate(var1 = last(var1[var1 != '']))
这就给了,

#一个tible:6 x 3
#组别:ID[2]
ID日期变量1
11b
2 1 2 b
3 1 3 b
4 2 1 c
5 2 c
6 2 3 c

这里有一个选项,使用
ave

df1$var1 <- with(df1, ave(as.character(var1), ID, FUN = 
      function(x) tail(x[nzchar(x)], 1)))
df1$var1
#[1] "b" "b" "b" "c" "c" "c"

df1$var1这里有一个选项,使用
ave

df1$var1 <- with(df1, ave(as.character(var1), ID, FUN = 
      function(x) tail(x[nzchar(x)], 1)))
df1$var1
#[1] "b" "b" "b" "c" "c" "c"
df1$var1