【问题标题】:Count groups of same characters in R计算R中相同字符的组
【发布时间】:2020-12-25 02:25:39
【问题描述】:

假设我有一个这样的字符串:

str <- "FRFFFLRR".

从我的字符串中获取这种 data.table 输出的最佳方法是什么:

x    y  
F    1  
R    1  
F    3  
L    1  
R    2

请注意,除非彼此相邻,否则“F”和“R”不计算在内。
所以,我需要一种方法来计算相同字符的组。你有什么想法吗?

我已经尝试拆分单个字母,然后使用unique(),但这给我留下了一个问题,即之前出现的另一组字母被忽略了。在这种情况下,它给了我“F R L”而不是“F R F L R”。

【问题讨论】:

    标签: r string count data.table


    【解决方案1】:

    您可以使用strsplit 在每个字符处拆分,并使用rleid 根据连续值和每组中的行数将数据分组。

    library(data.table)
    
    x <- strsplit(str, '')[[1]]
    data.table(x)[, .(x = first(x), y = .N), rleid(x)]
    
    #   rleid x y
    #1:     1 F 1
    #2:     2 R 1
    #3:     3 F 3
    #4:     4 L 1
    #5:     5 R 2
    

    【讨论】:

      【解决方案2】:

      我们可以在完成strsplit之后使用base R中的rle

      do.call(data.frame, rle(strsplit(str, "")[[1]]))[2:1]
      #    values lengths
      #1      F       1
      #2      R       1
      #3      F       3
      #4      L       1
      #5      R       2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-05
        • 1970-01-01
        • 2017-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多