【问题标题】:R: Extracting nth number occurring in a stringR:提取字符串中出现的第n个数字
【发布时间】:2013-12-13 02:15:50
【问题描述】:

我有一个名为df 的R 数据框,在df 的第一行和第二列中,我有以下string 条目:

 df[1,2]="[127512, 27455, 70464, 257686, 127094, 225910, 225910, 257686, 257686, 257686, 
 127094, 10000, 10000, 10000, 10000, 1936, 1936, 1936, 1936, 1936, 1936, 78336, 127512, 
 27455, 70464, 257686, 127094, 225910, 225910, 257686, 257686, 257686, 127094, 10000, 
 10000, 10000, 10000, 1936, 1936, 1936, 1936, 1936, 1936, 78336]"

我怎样才能提取这个字符串中的第四个数字(在我们的例子中是 257686)? 我不太擅长正则表达式......谢谢。

【问题讨论】:

  • 一个更好的问题可能是您为什么不将其存储为列表而不是 data.frame。
  • 这就是我的原始 excel 文件的结构方式......

标签: r


【解决方案1】:

Ananta 的解决方案有些不尽人意:

  1. 它包含一个空格(如果您使用拆分模式", " 可以修复它),但更重要的是
  2. 如果您要求第一项而不是第四项,则它不会起作用。答案将包括前导 [ 字符。

由于您的数据字符串是有效的 JSON,我会这样做:

library(rjson)
fromJSON(df[1, 2])[4]

这也适用于提取第一项。

【讨论】:

    【解决方案2】:

    在初稿中错过了[[1]],因此根据@thelatemail 的建议进行了编辑

    strsplit(df[1,2],",", fixed=TRUE)[[1]][4]
    

    作为下面的 florel cmets,请注意如何处理第一个和最后一个元素。快速修复可能会将"[" 替换为不需要第三方库的""

    【讨论】:

    • 大声笑,只是在没有检查的情况下快速输入答案。谢谢指正
    • 是的,作为下面的 flodel cmets,请注意如何处理第一个和最后一个元素。
    猜你喜欢
    • 1970-01-01
    • 2016-07-25
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    相关资源
    最近更新 更多