Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 命名为其聚合行的组_R_Group By_Data.table_Rename - Fatal编程技术网

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