r - 如何在R中拆分字符串并保存为数据框?
问题描述
我正在尝试根据每个字符串包含的新行数来拆分字符串。如果字符串包含两个新行,我只想要字符串右侧的前两个字符串。如果没有,那么只需拆分字符串并将它们保存在数据框中。
我在下面有一个示例数据:
data<-data.frame(Info=NA,Variable=NA)
strings<-c(" Fulton Allem \n Full Name"," 5 ft, 11 in\n 180 cm\n Height","215 lbs\n 97 kg\n Weight")
我想要以下结果:
Info Variable
Fulton Allem Full Name
180 cm Height
97 kg Weight
这是我的试验:
splitted<-stri_split_regex(string,"\n")
但这不适用于带有两个新行的字符串。体重和身高的单位是两个,但测量值相同。因此,我想得到公斤的体重和厘米的身高。
请注意,字符串可以是动态的。每个人的信息各不相同。此外,其中一些不包含此类信息。所以我不能使用正则表达式来提取这些字符串。
解决方案
str_match
您可以使用from尝试以下操作stringr
:
stringr::str_match(strings, '(?:.*\n)?\\s(.*)\n\\s(.*)')[, -1]
# [,1] [,2]
#[1,] "Fulton Allem " "Full Name"
#[2,] "180 cm" "Height"
#[3,] "97 kg" "Weight"
'\n'
在这里,我们捕获each之间的最后一个值和倒数第二个值string
。
推荐阅读
- c# - 如何从 appsettings.json 文件中获取 ConnectionString?
- apple-music - 通过 Facebook Messenger 应用内浏览器授权 Apple Music
- javascript - 执行 index.html 时出现错误
- amazon-emr - 增量表:org.apache.spark.sql.catalyst.parser.ParseException:不匹配的输入'FROM'
- javascript - 如何将一个类添加到一个 div 但从其他 div 中删除?
- elasticsearch - AWS 中的 Elasticsearch 快照失败,阻止升级
- python - 在 python 情绪分析中使用 twiiter 标签的方法?
- git - Git:如果分支中最新推送中的所有提交,则获取列表
- node.js - 无法使用 nodejs 在 microsoft botframework 上获取和显示 API 的结果
- python - Scikit分类比较