总结后避免丢失行
Avoiding missing row after summarise
我在 windows 上使用 RStudio 版本 0.98.1028。使用函数 sum() 总结一个多级数据框,包 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 = 1
和 type = a
之间的交互,我想要(即使它是 0
...)
提前致谢!
EB
你可以试试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',]
我在 windows 上使用 RStudio 版本 0.98.1028。使用函数 sum() 总结一个多级数据框,包 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 = 1
和 type = a
之间的交互,我想要(即使它是 0
...)
提前致谢!
EB
你可以试试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',]