是否有更好的方法在group_by()
组中添加行而不是使用bind_rows()
?这是一个有点笨重的例子:
df <- data.frame(a=c(1,1,1,2,2), b=1:5)
df %>%
group_by(a) %>%
do(bind_rows(data.frame(a=.$a[1], b=0), ., data.frame(a=.$a[1], b=10)))
我们的想法是,我们已经分组的列可以从组中推断出来。
我想知道这样的事情是否会起作用:
df %>%
group_by(a) %>%
insert(b=0, .at=0) %>%
insert(b=10)
与append()
类似,它可以默认在所有现有元素之后插入,并且可以足够智能地为未指定的任何列使用组值。对于未指定的非分组列,可能使用NA
。
我是否错过了现有的方便语法,或者这会有用吗?
答案 0 :(得分:2)
以下是使用data.table
的方法:
library(data.table)
setDT(df)
rbind(df, expand.grid(b = c(0, 10), a = df[ , unique(a)]))[order(a, b)]
根据您的实际情况,这个更简单的替代方案也可以起作用:
df[ , .(b = c(0, b, 10)), by = a]
(如果我们不关心保留名称c(0, b, 10)
),我们可以在j
中使用b
前者的优势在于即使df
包含更多列也能正常工作 - 只需为fill = TRUE
设置rbind.data.table
。