R 命名为其聚合行的组
我有以下资料:R 命名为其聚合行的组,r,group-by,data.table,rename,R,Group By,Data.table,Rename,我有以下资料: DT <- structure(list(Area = c("A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "B"), Year = c(1, 1, 1, 2, 2, 2,
DT <- structure(list(Area = c("A", "A", "A", "A", "A", "A", "B", "B",
"B", "B", "B", "B"), Year = c(1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2,
2), Group = c(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3), Population_Count = c(10,
12, 12, 10, 12, 12, 10, 13, 13, 10, 11, 12), Male_Count = c(5,
7, 7, 5, 4, 7, 5, 8, 8, 5, 6, 7), Female_Count = c(5, 5, 5, 5,
8, 5, 5, 5, 5, 5, 5, 5)), row.names = c(NA, -12L), class = c("tbl_df",
"tbl", "data.frame"))
# A tibble: 12 x 6
Area Year Group Population_Count Male_Count Female_Count
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 A 1 1 10 5 5
2 A 1 2 12 7 5
3 A 1 3 12 7 5
4 A 2 1 10 5 5
5 A 2 2 12 4 8
6 A 2 3 12 7 5
7 B 1 1 10 5 5
8 B 1 2 13 8 5
9 B 1 3 13 8 5
10 B 2 1 10 5 5
11 B 2 2 11 6 5
12 B 2 3 12 7 5
这很好,但是这是数据的子集,我希望能够在运行代码时命名新组(而不是在之后,因为group==3
已经存在)。有办法吗?或者我必须事先重命名这些组吗
预期结果:
# A tibble: 8 x 6
Area Year Group Population_Count Male_Count Female_Count
<chr> <dbl> <chr> <dbl> <dbl> <dbl>
1 A 1 New_group 22 12 10
2 A 2 New_group 22 9 13
3 B 1 New_group 23 13 10
4 B 2 New_group 21 11 10
5 A 1 3 12 7 5
6 A 2 3 12 7 5
7 B 1 3 13 8 5
8 B 2 3 12 7 5
#一个tible:8 x 6
地区年份组人口数男性数女性数
1 A 1新的_组22 12 10
2 A 2新的_组22 9 13
3 B 1新_组23 13 10
4 B 2新大学组21 11 10
5 A 1 3 12 7 5
6 A 2 3 12 7 5
7 B 1 3 13 8 5
8 B 2 3 12 7 5
我认为事先重命名组是一个不错的选择。将值为1和2的组重命名为某个公共值(此处为99),然后按和分组
library(data.table)
setDT(DT)[Group %in% c(1, 2), Group := 99]
DT[, lapply(.SD, sum), .(Area, Year, Group)]
# Area Year Group Population_Count Male_Count Female_Count
#1: A 1 99 22 12 10
#2: A 1 3 12 7 5
#3: A 2 99 22 9 13
#4: A 2 3 12 7 5
#5: B 1 99 23 13 10
#6: B 1 3 13 8 5
#7: B 2 99 21 11 10
#8: B 2 3 12 7 5
我认为提前重命名组是一个不错的选择。将值为1和2的组重命名为某个公共值(此处为99),然后按和分组
library(data.table)
setDT(DT)[Group %in% c(1, 2), Group := 99]
DT[, lapply(.SD, sum), .(Area, Year, Group)]
# Area Year Group Population_Count Male_Count Female_Count
#1: A 1 99 22 12 10
#2: A 1 3 12 7 5
#3: A 2 99 22 9 13
#4: A 2 3 12 7 5
#5: B 1 99 23 13 10
#6: B 1 3 13 8 5
#7: B 2 99 21 11 10
#8: B 2 3 12 7 5