我有一个这样的数据框
test <- data.frame(id = rep(LETTERS[1:2],each = 3),
a = c(1,NA,NA,10,NA,NA),
b = c(2,NA,NA,20,NA,NA),
c = c(NA,3,NA,NA,30,NA),
d = c(NA,NA,4,NA,NA,40))
我得到了这个数据框,并想对其进行转换,以便每个唯一的“id”只有一行,并且数据框中没有 NA。
我正在这样做
ddply(test,
.variables = 'id',
.fun = function(df){
colSums(df[,1:4], na.rm = T)})
得到这个data.frame
id a b c d
1 A 1 2 3 4
2 B 10 20 30 40
它可以工作,但是是否有一种更直接的方法可以不使用colSums
, 压缩行以为每个“id”创建一行,因为在每个“id”中,所有列只有一个值,其余的都是 NA . 我在寻找其他东西时确实在某个地方遇到了类似的请求,但现在找不到!
谢谢