1

我在 Windows 上使用 RStudio 版本 0.98.1028。使用函数 sum()总结多级数据框 package dplyr,我丢失了一行,其中有sum = 0. 换句话说,如果我的原始数据框类似于

group <- as.factor(rep(c('X', 'Y'), each = 1, times = 6))
type <- as.factor(rep(c('a', 'b'), each = 2, times = 3))
day <- as.factor(rep(1:3, each = 4))

df = data.frame(type = type, day = day, value = abs(rnorm(12)))
df = df[day != 1 | type != 'a',]

我总结一下

df1 = df %>%
    group_by(day, type) %>%
    summarise(sum = sum(value))

然后我得到一个缺失的行,这是我想要的day = 1and之间的交互(即使它是......)type = a0

提前致谢!

EB

4

1 回答 1

0

你可以试试left_join

library(dplyr)
left_join(expand.grid(type=unique(df$type), day=unique(df$day)), df1) %>%
                            group_by(day, type) %>%
                            summarise(sum=sum(value, na.rm=TRUE))
#  day type       sum
#1   1    a 0.0000000
#2   1    b 0.5132914
#3   2    a 1.2482210
#4   2    b 0.9232343
#5   3    a 2.0381779
#6   3    b 0.7558351

df1在哪里

 df1 <- df[day != 1 | type != 'a',]
于 2015-01-03T16:25:22.430 回答