是否有更好的方法在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)))
Run Code Online (Sandbox Code Playgroud)
我们的想法是,我们已经分组的列可以从组中推断出来.
我想知道这样的事情是否可以起作用:
df %>%
group_by(a) %>%
insert(b=0, .at=0) %>%
insert(b=10)
Run Code Online (Sandbox Code Playgroud)
比如append(),它可以默认插入所有现有元素之后,并且可以足够聪明地为未指定的任何列使用组值.也许NA用于未指定的非分组列.
是否存在我错过的现有方便语法,或者这会有用吗?
这是一种使用的方法data.table:
library(data.table)
setDT(df)
rbind(df, expand.grid(b = c(0, 10), a = df[ , unique(a)]))[order(a, b)]
Run Code Online (Sandbox Code Playgroud)
根据您的实际情况,这个更简单的替代方案也可以工作:
df[ , .(b = c(0, b, 10)), by = a]
Run Code Online (Sandbox Code Playgroud)
(如果我们不关心保留名称,我们可以简单地使用c(0, b, 10)in )jb
前者的优点是,即使有df更多列,它也能工作——只需设置fill = TRUE为rbind.data.table。