gpt4 book ai didi

r - 在 data.table 结果中包含不用于计算的列

转载 作者:行者123 更新时间:2023-12-04 11:35:55 27 4
gpt4 key购买 nike

我有如下数据表:

   id user V1 V2 V3 V4
1: 1 1 1 1 1 0
2: 1 2 4 1 3 1
3: 1 3 0 1 6 0
4: 2 1 1 0 2 1
5: 2 2 2 1 0 0

然后我执行一个 lapply group by id 计算:

my_data[,lapply(.SD,mean)*.SD,by=id,.SDcols=3:5] 

结果如下:

    id    V1    V2      V3
1: 1 1.666667 1.0 3.333333
2: 1 6.666667 1.0 10.000000
3: 1 0.000000 1.0 20.000000
4: 2 1.500000 0.0 2.000000
5: 2 3.000000 0.5 0.000000

是否有一种简单的数据表方法来包含原始数据表中的用户列?我已经设法做到了

cbind(my_data[,.(user)], my_data[,lapply(.SD,mean)*.SD,by=id,.SDcols=3:5])

但我真的希望有更好的方法

最佳答案

我建议你通过 vignettes . data.table 简介 小插图解释了一个重要的观点,我将在这里重复这一点。

As long as j returns a list, each element of the list will become a column in the resulting data.table.

在 base R 中,c(list, list) 返回一个包含所有元素的新列表。我们可以简单地使用现有的功能来做:

require(data.table) # v1.9.7 devel
dt[, c(list(user=user), lapply(.SD, function(x) x*mean(x))), by=id, .SDcols=V1:V4]

我在 current development version of data.table, v1.9.7它具有某些新功能,例如 .SDcolsV1:V4 的用法:

关于r - 在 data.table 结果中包含不用于计算的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37744771/

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