【问题标题】:How to split strings and save as data frame in R?如何在R中拆分字符串并保存为数据框?
【发布时间】:2020-12-04 22:22:51
【问题描述】:

我正在尝试根据每个字符串包含的新行数来拆分字符串。如果字符串包含两个新行,我只想要字符串右侧的前两个字符串。如果没有,那么只需拆分字符串并将它们保存在数据框中。

我在下面有一个示例数据:

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")

但这不适用于带有两个新行的字符串。体重和身高的单位是两个,但测量值相同。因此,我想用 kg 表示体重,用 cm 表示身高。

请注意,字符串可以是动态的。每个人的信息各不相同。此外,其中一些不包含此类信息。所以我不能使用正则表达式来提取这些字符串。

【问题讨论】:

    标签: r regex string character


    【解决方案1】:

    您可以使用来自stringrstr_match 尝试以下操作:

    stringr::str_match(strings, '(?:.*\n)?\\s(.*)\n\\s(.*)')[, -1]
    
    #        [,1]            [,2]       
    #[1,] "Fulton Allem " "Full Name"
    #[2,] "180 cm"        "Height"   
    #[3,] "97 kg"         "Weight"  
    

    在这里,我们为每个string 捕获'\n' 之间的倒数第二个值。

    【讨论】:

    • 感谢您的帮助。我收到此错误。 stri_match_first_regex(str, regex, ...) 中的错误:缺少参数“regex”,没有默认值
    • 您确定您复制的代码正确吗?是否缺少逗号?你能再试一次吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    相关资源
    最近更新 更多