【问题标题】: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