gpt4 book ai didi

r - data.table 按列名操作

转载 作者:行者123 更新时间:2023-12-04 00:38:39 25 4
gpt4 key购买 nike

假设我有一个 data.table

a <- data.table(id=c(1,1,2,2,3),a=21:25,b=11:15,key="id")

我可以添加这样的新列:
a[, sa := sum(a), by="id"]
a[, sb := sum(b), by="id"]
> a
id a b sa sb
1: 1 21 11 43 23
2: 1 22 12 43 23
3: 2 23 13 47 27
4: 2 24 14 47 27
5: 3 25 15 25 15

但是,假设我有列名:
for (n in c("a","b")) {
s <- paste0("s",n)
a[, s := sum(n), by="id", with=FALSE] # ERROR: invalid 'type' (character) of argument
}

我该怎么办?

最佳答案

你也可以这样做:

a <- data.table(id=c(1,1,2,2,3),a=21:25,b=11:15,key="id")

a[, c("sa", "sb") := lapply(.SD, sum), by = id]

或者更一般地:
cols.to.sum = c("a", "b")
a[, paste0("s", cols.to.sum) := lapply(.SD, sum), by = id, .SDcols = cols.to.sum]

关于r - data.table 按列名操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21024198/

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