如何使用tidyr::Separate在R中拆分字符串并保留分隔符字符串的值? [英] How do I split a string with tidyr::separate in R and retain the values of the separator string?

查看:11
本文介绍了如何使用tidyr::Separate在R中拆分字符串并保留分隔符字符串的值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据集:

crimes<-data.frame(x=c("Smith", "Jones"), charges=c("murder, first degree-G, manslaughter-NG", "assault-NG, larceny, second degree-G"))

我使用tidyr:Separate在匹配"G"的情况下拆分费用列

crimes<-separate(crimes, charges, into=c("v1","v2"), sep="G,")

这将拆分我的列,但删除分隔符"G,"。我想保留结果列拆分中的"G"。

我想要的输出是:

 x         v1                       v2
 Smith     murder, first degree-G   manslaughter-NG
 Jones     assault-NG               larceny, second degree-G

欢迎任何建议。

推荐答案

更新

这就是您要的。请记住,您的数据并不整洁(V1和V2的每列中都有多个变量)

A<-separate(crimes,charges,into=c("V1","V2"),sep = "(?<=G,)")
A
      x                      V1                        V2
1 Smith murder, first degree-G,           manslaughter-NG
2 Jones             assault-NG,  larceny, second degree-G

获得保留"G"或"NG"的一个更简单的方法是使用sep=", ",正如阿利斯泰尔所说。

A<-separate(crimes, charges, into=c("v1","v2"), sep = ', ')

这给了

      x         v1              v2
1 Smith   murder-G manslaughter-NG
2 Jones assault-NG       larceny-G

如果要继续分隔数据。框(使用-)

separate(A, v1, into = c("v3","v4"), sep = "-")

这给了

      x      v3 v4              v2
1 Smith  murder  G manslaughter-NG
2 Jones assault NG       larceny-G

您需要为v2列再次执行此操作。我不知道您是否想继续分开,请发布您的预期输出以使我的回答更具体。

这篇关于如何使用tidyr::Separate在R中拆分字符串并保留分隔符字符串的值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆