gpt4 book ai didi

r - dplyr:在 group_by 组中添加行

转载 作者:行者123 更新时间:2023-12-02 00:19:57 46 4
gpt4 key购买 nike

是否有比使用 bind_rows() 更好的在 group_by() 组中添加行的方法?这是一个有点笨拙的示例:

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

是否有我错过的现有方便语法,或者这会有帮助吗?

最佳答案

这是使用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]

(如果我们不关心保留名称 b,我们可以简单地在 j 中使用 c(0, b, 10) >)

前者的优点是,即使 df 有更多列,它也能工作——只需为 rbind.data.table 设置 fill = TRUE .

关于r - dplyr:在 group_by 组中添加行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34551846/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com