【发布时间】:2014-09-23 17:49:03
【问题描述】:
我有一个如下的数据框
test_df<-data.frame(col1=c(1,NA,NA,4,5),col2=c(3,NA,NA,5,6),col3=c("a","b","c","d","c"))
test_df
col1 col2 col3
1 3 a
NA NA b
NA NA c
4 5 d
5 6 c
我正在根据 col3 聚合数据
agg_test<-aggregate(list(test_df$col1,test_df$col2),by=list(test_df$col3),sum,na.rm=T)
agg_test
Col3 col1 col2
a 1 3
b 0 0
c 5 6
d 4 5
根据我对求和正确的了解,我们需要明确定义要对 NA 执行的操作,在这种情况下,我已指定要从求和中删除 NA,我猜在内部 R 会将所有 NA 转换为 0 并且根据by条件总结。我需要以不同的方式处理数据中的 NA 和 0,因此必须保持有效的 NA(在这种情况下,b 的观察值是 NA 而不是 0)。我怎样才能做到这一点?
Expected o/p
Col3 col1 col2
a 1 3
b NA NA
c 5 6
d 4 5
【问题讨论】:
-
您在寻找什么输出?现在您正在使用
na.rm=T来忽略 NA。和na.rm=F一样是你想要的吗? -
我希望 b 的值是
NA而不是0,na.rm =F不会汇总 c 的观察值,我如果有多个观察值并且它们具有NA,则希望同时处理这两种情况,输出应该是数字总和,如果观察结果仅为NA,则应保持NA。 -
在问题中显示您期望的输出。
标签: r dataframe data.table aggregate na