首页 > 解决方案 > 在 tidyverse 中分离混合值并生成新列

问题描述

我的数据样本如下:

df1 <- read.table(text = "var Time  
 12O    12
13O 11
22B 45
33Z 22
21L 2
11M 13", header = TRUE)

我想分隔“Var”列中的值以获取以下数据:

df2 <- read.table(text = " Group1 Group2 Group3 
 1  2   O
1   3   O
2   2   B
3   3   Z
2   1   L
1   1   M", header = TRUE)

我尝试了以下代码:

 df2 <- df1 %>% separate(var, into = c('Group1', 'Group2','Group3'), sep = 1)

我得到一个错误。我已经搜索找到错误,但我失败了。

标签: rtidyverse

解决方案


如果要保留原始列,可以使用str_split_fixedfromstringr包和cbind结果到现有的dataframe

cbind(df1, str_split_fixed(as.character(df1$var),"", n = 3))

  var Time 1 2 3
1 12O   12 1 2 O
2 13O   11 1 3 O
3 22B   45 2 2 B
4 33Z   22 3 3 Z
5 21L    2 2 1 L
6 11M   13 1 1 M

推荐阅读