使用group_by分组DataTable计算2023列分组求和失败问题
数字列名分组求和问题解决
直接写sum(2023)时,R会把2023识别成普通数值,而非你的DataTable列名——因为R不允许变量/列名以数字开头,必须用反引号把数字列名包裹起来,才能让R正确识别这是一列数据。
修正后的代码
cubet <- cubed %>% group_by(id) %>% mutate(Subtotal = sum(`2023`)) %>% ungroup()
正确结果
运行修正后的代码后,Subtotal列会按id分组计算2023列的总和,得到如下表格:
| id | 2022 | 2023 | Subtotal |
|---|---|---|---|
| pippo | 4 | 2 | 2 |
| lulca | 7 | 3 | 11 |
| lulca | 1 | 8 | 11 |
| maria | 1 | 3 | 3 |
可选:data.table语法实现
如果你的数据是data.table类型,也可以用以下代码实现相同效果:
library(data.table) setDT(cubed)[, Subtotal := sum(`2023`), by = id]
内容的提问来源于stack exchange,提问作者nuv4
相关产品推荐
相关产品推荐

