不同组合的重新编码标识符

问题描述 投票:1回答:1

我有一个以下风格的表:

Group Combi Value
----  ----  ----
x     A     1
x     A     2
x     B     1
x     B     3
x     C     2
x     C     3
y     D     1
y     D     2
y     E     1
y     E     3
y     F     2
y     F     3

我想添加另一个变量,它以下列方式重命名“Combi”列中的值:如果我有上面的表,并且“Combi”是例如A与前两行一样,我想将A更改为x_1_2,因为两行都是“Group”x,相应的“Values”是“1”和“2”(请注意,“Combi”总是分配给一个“集团”)。因此,该表应如下所示:

Group Combi Value Combi2
----  ----  ----  ----
x     A     1     x_1_2
x     A     2     x_1_2
x     B     1     x_1_3
x     B     3     x_1_3
x     C     2     x_2_3
x     C     3     x_2_3
y     D     1     y_1_2
y     D     2     y_1_2
y     E     1     y_1_3
y     E     3     y_1_3
y     F     2     y_2_3
y     F     3     y_2_3

请注意,我总是按升序对“值”进行排序。因此,我,例如,取y_2_3而不是y_3_2。另请注意,每个“Combi”每个“组”可能有两个以上的条目。我很感激任何帮助如何在R中做到这一点!

最好的祝福!

r combinations rename recode
1个回答
2
投票

以下使用dplyr工作:

require(dplyr);
df %>%
    group_by(Group, Combi) %>%
    arrange(Group, Combi, Value) %>%
    mutate(Combi2 = paste(Group, paste0(Value, collapse = "_"), sep = "_"))

# A tibble: 14 x 4
# Groups:   Group, Combi [6]
#   Group Combi Value Combi2
#   <fct> <fct> <int> <chr>
# 1 x     A         1 x_1_2_3_4
# 2 x     A         2 x_1_2_3_4
# 3 x     A         3 x_1_2_3_4
# 4 x     A         4 x_1_2_3_4
# 5 x     B         1 x_1_3
# 6 x     B         3 x_1_3
# 7 x     C         2 x_2_3
# 8 x     C         3 x_2_3
# 9 y     D         1 y_1_2
#10 y     D         2 y_1_2
#11 y     E         1 y_1_3
#12 y     E         3 y_1_3
#13 y     F         2 y_2_3
#14 y     F         3 y_2_3

样本数据

df <- read.table(text =
    "Group Combi Value
x     A     1
x     A     2
x     A     3
x     A     4
x     B     1
x     B     3
x     C     2
x     C     3
y     D     1
y     D     2
y     E     1
y     E     3
y     F     2
y     F     3", header = T)
© www.soinside.com 2019 - 2024. All rights reserved.