gpt4 book ai didi

r - ddply 到 data.table 中的多个等效列

转载 作者:行者123 更新时间:2023-12-04 07:54:48 25 4
gpt4 key购买 nike

我是 data.table 包的忠实粉丝,我在将 plyr 包的 ddply 中的一些代码转换为 data.table 中的等效代码时遇到了麻烦。 ddply 的代码是:

dfx <- data.frame(
group = c(rep('A', 8), rep('B', 15), rep('C', 6)),
sex = sample(c("M", "F"), size = 29, replace = TRUE),
age = runif(n = 29, min = 18, max = 54),
age2 = runif(n = 29, min = 18, max = 54)
)

ddply(dfx, .(group, sex), numcolwise(sum))

我想要做的是跨多列求和,而不必手动指定列名。 data.table 包中的手册等效项是:
dfx.dt = data.table(dfx)
dfx.dt[ , sum.age := sum(age), by="group,sex"]
dfx.dt[ , sum.age2 := sum(age2), by="group,sex"]
dfx.dt[!duplicated(dfx.dt[ , {list(group, sex)}]), ]

明确地说,我的问题是“有没有办法在 data.table 中执行等效的 ddply 代码?”

非常感谢任何帮助,谢谢。

最佳答案

是的,有办法:

dfx.dt[,lapply(.SD,sum),by='group,sex']

这在 FAQ 的第 2.1 节中提到用于数据表。

关于r - ddply 到 data.table 中的多个等效列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18876783/

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