将字符串分成未知数的新列

问题描述

我有一个如下所示的数据集:

data = tibble(emp = c(1:4),idstring = c("PER20384|PER49576|PER10837|PER92641","PER20384|PER49576|PER03875|PER72534","PER20384|PER98642|PER17134","PER20384|PER98623|PER17134|PER01836|PER1234"))

我想用“|”分隔idstring成单独的列。但是,我需要最右边的字符(例如“PER92641”)始终位于标有“Level_1”的列中,最左边的字符根据行中的字符数而变化。

我尝试了一些基本步骤,例如:

data_split = str_split(data$idstring,"\\|",simplify = T)
colnames(data_split) = paste0("Level_",ncol(data_split):1)

但是我得到这样的错误输出:

  Level_5    Level_4    Level_3    Level_2    Level_1  
[1,] "PER20384" "PER49576" "PER10837" "PER92641" ""       
[2,] "PER20384" "PER49576" "PER03875" "PER72534" ""       
[3,] "PER20384" "PER98642" "PER17134" ""         ""       
[4,] "PER20384" "PER98623" "PER17134" "PER01836" "PER1234" 

它应该是这样的:

   Level_5      Level_4    Level_3    Level_2    Level_1  
[1,]   NA       "PER20384" "PER49576" "PER10837" "PER92641"        
[2,]   NA       "PER20384" "PER49576" "PER03875" "PER72534"        
[3,]   NA         NA       "PER20384" "PER98642" "PER17134"       
[4,] "PER20384" "PER98623" "PER17134" "PER01836" "PER1234"

请注意,我也希望在适用的情况下用 NA 代替空白区域。

我觉得我可以以某种方式颠倒每一行的顺序,然后在添加列名之前用 NA 替换空格,但我希望这里有一个更优雅的解决方案。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)