为两列生成逗号分隔字符的组合 [duplicate]

Generate Combinations of Comma-Separated Characters for Two Columns [duplicate]

提问人:Dan 提问时间:11/6/2023 更新时间:11/6/2023 访问量:46

问:

我有一个(示例)数据帧,包括一个标识符(此处为“ID”)和两个 interes t 变量(此处为“V1”和“V2”):

df <- data.frame(ID = c("Sample 1", "Sample 2", "Sample 3"), 
                 V1 = c("A, B, C",  "E"       , "A, F"),
                 V2 = c("H, G"   ,  "C, A"    , "J"))

对于感兴趣的两个变量(即列),我想生成逗号分隔字符的所有潜在组合,这些字符可通过标识符(通过逐行偏角)进行识别。

结果数据框可能如下所示(只要组合完成,顺序和结构上的一些灵活性是可以接受的):

rd <- data.frame(ID = c("Sample 1","Sample 1", "Sample 1", "Sample 1", "Sample 1", "Sample 1", "Sample 2", "Sample 2", "Sample 3", "Sample 3"),
                 V1 = c("A", "A", "B", "B", "C", "C", "E", "E", "A", "F"),
                 V2 = c("H","G","H","G","H","G","C","A","J","J"))

非常感谢您的支持。

R DataFrame 组合

评论


答:

2赞 Jon Spring 11/6/2023 #1
library(tidyr)
df  |>
  separate_rows(V1) |>
  separate_rows(V2)

结果

         ID V1 V2
1  Sample 1  A  H
2  Sample 1  A  G
3  Sample 1  B  H
4  Sample 1  B  G
5  Sample 1  C  H
6  Sample 1  C  G
7  Sample 2  E  C
8  Sample 2  E  A
9  Sample 3  A  J
10 Sample 3  F  J

评论

0赞 Dan 11/6/2023
完善。我想应该换成,对吧?否则,它:)|>%>%
0赞 Jon Spring 11/6/2023
如果使用 2021 年 5 月 v4.1.0 之后的 R 版本,则它包括使用 .在许多像这样的简单情况下,相当于 .stackoverflow.com/questions/67633022/......|>%>%