如何按字母顺序排列数据框中的逗号分隔值?
How do I alphabetize comma-separated values in a dataframe?
我在 R 中有一个数据框,如下面第一个 table 所示。我想按字母顺序排列每个单元格中指定列(Q1、Q2 等)的逗号分隔值,以便生成如下面第二个 table 所示的数据框。
id
Q1
Q2
1
alpha,charlie,apple
B,D,C,A
2
zulu,delta,bravo
D,A,C,B
id
Q1
Q2
1
alpha,apple,charlie
A,B,C,D
2
bravo,delta,zulu
A,B,C,D
我们可以拆分两列,执行 sort
ing 然后 paste
返回
library(dplyr)
library(purrr)
df1 %>%
mutate(across(c(Q1, Q2), ~ map_chr(strsplit(., ","), ~ toString(sort(.x)))))
-输出
id Q1 Q2
1 1 alpha, apple, charlie A, B, C, D
2 2 bravo, delta, zulu A, B, C, D
数据
df1 <- structure(list(id = 1:2, Q1 = c("alpha,charlie,apple", "zulu,delta,bravo"
), Q2 = c("B,D,C,A", "D,A,C,B")), class = "data.frame", row.names = c(NA,
-2L))
我在 R 中有一个数据框,如下面第一个 table 所示。我想按字母顺序排列每个单元格中指定列(Q1、Q2 等)的逗号分隔值,以便生成如下面第二个 table 所示的数据框。
id | Q1 | Q2 |
---|---|---|
1 | alpha,charlie,apple | B,D,C,A |
2 | zulu,delta,bravo | D,A,C,B |
id | Q1 | Q2 |
---|---|---|
1 | alpha,apple,charlie | A,B,C,D |
2 | bravo,delta,zulu | A,B,C,D |
我们可以拆分两列,执行 sort
ing 然后 paste
返回
library(dplyr)
library(purrr)
df1 %>%
mutate(across(c(Q1, Q2), ~ map_chr(strsplit(., ","), ~ toString(sort(.x)))))
-输出
id Q1 Q2
1 1 alpha, apple, charlie A, B, C, D
2 2 bravo, delta, zulu A, B, C, D
数据
df1 <- structure(list(id = 1:2, Q1 = c("alpha,charlie,apple", "zulu,delta,bravo"
), Q2 = c("B,D,C,A", "D,A,C,B")), class = "data.frame", row.names = c(NA,
-2L))