根据单元格中的值数重新整形R中的数据帧

时间:2018-05-04 18:28:56

标签: r dataframe

我希望从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

我想出了一个我错放的复杂解决方案,并认为必须有一种更简单的方法。谢谢你的任何指示。

2 个答案:

答案 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