R语言 对变量进行分组并将其添加到表的末尾

ecbunoof  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(228)

我有一个如下所示的表:
| 型号|编号|
| - -|- -|
| A级|一个|
| B| 2个|
| E级|三个|
| C语言|四个|
| D级|五个|
| C语言|六个|
| G级|七个|
我想制作一个表格,将类型(A-C)分组,并将这些相同的观察结果添加到表格的底部。因此,新表格看起来如下:
| 型号|编号|
| - -|- -|
| A级|一个|
| B| 2个|
| E级|三个|
| C语言|四个|
| D级|五个|
| C语言|六个|
| G级|七个|
| A至C|一个|
| A至C| 2个|
| E级|三个|
| A至C|四个|
| D级|五个|
| A至C|六个|
| G级|七个|
这可能吗?任何帮助将不胜感激!

x759pob2

x759pob21#

一种方法是先确定分组,然后将两个 Dataframe 绑定在一起,例如:

library(dplyr)

df <- read.table(text = "Type   Number
A   1
B   2
E   3
C   4
D   5
C   6
G   7", header = TRUE)

tmp <- df %>%
  mutate(Type = ifelse(Type %in% c("A", "B", "C"),
                       "A-C", Type))
result <- bind_rows(df, tmp)
result
#>    Type Number
#> 1     A      1
#> 2     B      2
#> 3     E      3
#> 4     C      4
#> 5     D      5
#> 6     C      6
#> 7     G      7
#> 8   A-C      1
#> 9   A-C      2
#> 10    E      3
#> 11  A-C      4
#> 12    D      5
#> 13  A-C      6
#> 14    G      7

创建于2022年11月30日,使用reprex v2.0.2
方法相同,但使用基数R(即不需要dplyr包):

df <- read.table(text = "Type   Number
A   1
B   2
E   3
C   4
D   5
C   6
G   7", header = TRUE)

tmp <- df
tmp$Type <- ifelse(df$Type %in% c("A", "B", "C"), "A-C", df$Type)
rbind(df, tmp)
#>    Type Number
#> 1     A      1
#> 2     B      2
#> 3     E      3
#> 4     C      4
#> 5     D      5
#> 6     C      6
#> 7     G      7
#> 8   A-C      1
#> 9   A-C      2
#> 10    E      3
#> 11  A-C      4
#> 12    D      5
#> 13  A-C      6
#> 14    G      7

创建于2022年11月30日,使用reprex v2.0.2

jdzmm42g

jdzmm42g2#

使用 forcats 因子折叠:

library(forcats)

rbind(df, transform(df, Type = fct_collapse(Type, `A-C` = c("A", "B", "C"))))
#    Type Number
# 1     A      1
# 2     B      2
# 3     E      3
# 4     C      4
# 5     D      5
# 6     C      6
# 7     G      7
# 8   A-C      1
# 9   A-C      2
# 10    E      3
# 11  A-C      4
# 12    D      5
# 13  A-C      6
# 14    G      7

相关问题