我希望从R中转换数据框 df :
col1 col2
X1 A;B
X2 B
X3 C;D
X4 D
成:
col1 col2
X1 A
X1 B
X2 B
X3 C
X3 D
X4 D
我想出了一个我错放的复杂解决方案,并认为必须有一种更简单的方法。谢谢你的任何指示。
答案 0 :(得分:0)
library(tidytext)
unnest_tokens(dat,col2,col2,to_lower=F)
col1 col2
1 X1 A
1.1 X1 B
2 X2 B
3 X3 C
3.1 X3 D
4 X4 D
不使用包:在基础R中你可以这样做:
stack(setNames(strsplit(dat$col2,";"),dat$col1))
values ind
1 A X1
2 B X1
3 B X2
4 C X3
5 D X3
6 D X4
您可以根据需要排列列
答案 1 :(得分:0)
正如我所说:
df <- read.table(text = "col1 col2
X1 A;B
X2 B
X3 C;D
X4 D",sep = "",header = TRUE)
> df
col1 col2
1 X1 A;B
2 X2 B
3 X3 C;D
4 X4 D
> library(tidyr)
> separate_rows(df,col2,sep = ";")
col1 col2
1 X1 A
2 X1 B
3 X2 B
4 X3 C
5 X3 D
6 X4 D