在列中拆分文本并添加行号

mari

我想在数据框列中拆分一些文本,并将其与行号或id列一起保存到数据框中。

我通常使用plyr来做到这一点,但这在dplyr中不再起作用。

如果我正确理解的话,它更多是plyr中的一个错误,并且我的代码可以正常工作,因为它是一个错误。

因此,我正在寻找执行此操作的正确方法。

这是plyr中的一个最小示例:

library(plyr)
set.seed(1)
df <- data.frame(a=seq(2), 
                 b=c(paste(sample(letters,3), collapse=';'),
                     paste(sample(letters,3), collapse=';')),               
                 stringsAsFactors=FALSE)
ddply(df,.(a),summarise,unlist(strsplit(b,';')))

它将变成原始数据帧:

  a     b
1 1 g;j;n
2 2 x;f;v

变成这个:

  a ..1
1 1   g
2 1   j
3 1   n
4 2   x
5 2   f
6 2   v

正确的dplyr解决方案是什么?

A5C1D2H2I1M1N2O1R2T1

我偏爱cSplit“ splitstackshape”软件包,但您可能会对unnest“ tidyr”与“ dplyr”结合使用感兴趣:

library(dplyr)
library(tidyr)
df %>%
  mutate(b = strsplit(b, ";")) %>%
  unnest(b)
#   a b
# 1 1 g
# 2 1 j
# 3 1 n
# 4 2 x
# 5 2 f
# 6 2 v

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章