gpt4 book ai didi

r - 在 data.table 中分组,选择多列中的第一个元素

转载 作者:行者123 更新时间:2023-12-02 09:26:23 27 4
gpt4 key购买 nike

给定数据表:

DT <- data.table(C1=1:6,C2=10:15,C3=1:3,C4=c("A","B")) 

C1 C2 C3 C4
1: 1 10 1 A
2: 2 11 2 B
3: 3 12 3 A
4: 4 13 1 B
5: 5 14 2 A
6: 6 15 3 B

如果我想按 C4 分组,计算 C3 的平均值并显示 C1 中的第一个元素,我会这样做:

DT[, list(C1=C1[1], AVG_C3=mean(C3), Freq=.N), by=C4]
C4 C1 AVG_C3 Freq
1: A 1 2 3
2: B 2 2 3

如果我想获取 C2 中的第一个元素,那么我添加 C2[1]在上面一行:

DT[, list(C1=C1[1], C2=C2[1], AVG_C3=mean(C3), Freq=.N), by=C4]

考虑到我有数百列并且我希望看到上面解释的第一个元素,我将如何处理这个任务?

也许有一些简单的方法,比如使用所需列的向量 cols <- c("C1","C2") , 但我不知道如何分配给 colsDT[] 内.我在这里查看了分配给多个列 Assign multiple columns using := in data.table, by group ,但我不确定如何在这种情况下实现它。感谢您的反馈:)

最佳答案

假设你想分别看到C1C2C3的第一个元素,你可以使用head.SD 上,并使用 .SDcols 指定列名。

cols <- c("C1", "C2", "C3")
DT[, c(head(.SD, 1), list(AVG_C3=mean(C3), Freq=.N)), by=C4, .SDcols = cols]

C4 C1 C2 C3 AVG_C3 Freq
1: A 1 10 1 2 3
2: B 2 11 2 2 3

关于r - 在 data.table 中分组,选择多列中的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37691282/

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