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