【发布时间】:2016-10-12 13:44:53
【问题描述】:
x1 <- c(1, 2, 3)
x2 <- c("a", "b", "a")
x3 <- as.Date(c(NA, "2016/01/01", NA), "%Y/%m/%d")
df <- data.frame(x1,x2,x3)
当我将聚合应用于df:
aggregate(x1~x2+x3, df, sum)
结果看起来像这样,但忽略了NA 值:
x2 x3 x1
b 2016/01/01 2
所以我需要聚合NA 值并得到如下结果:
x2 x3 x1
a NA 4
b 2016/01/01 2
有人可以帮忙吗?
【问题讨论】:
-
@jogo 也会这么说,但你必须设计一个自定义函数?
-
我只是建议使用
data.table或其他允许您按NA值分组的东西。喜欢library(data.table); as.data.table(df)[, sum(x1), by = .(x2, x3)]。 -
@jogo,我认为这行不通。我很确定您仍然需要更改“x3”分组变量,使其不包含
NA值.... -
确实
dplyr库默认也保留NA:df %>% group_by(x2, x3) %>% summarise(sum(x1)) -
抱歉,x3 应该是 x3 as.Date(x3)
标签: r