不同组合的重新编码标识符
Recode Identifier for Different Combinations
我有一个 table 样式如下:
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" 列中的值:如果我有上面的 table 和 "Combi" 例如A 与前两行一样,我想将 A 更改为 x_1_2 因为这两行都引用 "Group" x 并且对应的 "Values" 是“1”和“2”(注意 a "Combi" 总是恰好分配给一个 "Group")。因此,table 应该是这样的:
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
请注意,我总是按升序对 "Values" 进行排序。因此,我例如采用 y_2_3 而不是 y_3_2。另请注意,每个 "Group" 每个 "Combi" 我可能有两个以上的条目。我将不胜感激如何在 R 中执行此操作的任何帮助!
此致!
以下作品使用 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)
我有一个 table 样式如下:
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" 列中的值:如果我有上面的 table 和 "Combi" 例如A 与前两行一样,我想将 A 更改为 x_1_2 因为这两行都引用 "Group" x 并且对应的 "Values" 是“1”和“2”(注意 a "Combi" 总是恰好分配给一个 "Group")。因此,table 应该是这样的:
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
请注意,我总是按升序对 "Values" 进行排序。因此,我例如采用 y_2_3 而不是 y_3_2。另请注意,每个 "Group" 每个 "Combi" 我可能有两个以上的条目。我将不胜感激如何在 R 中执行此操作的任何帮助!
此致!
以下作品使用 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)