我想在数据框列中拆分一些文本,并将其与行号或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解决方案是什么?
我偏爱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] 删除。
我来说两句