昨天我问了类似的问题 Count each next occurence of string in substring 现在我在和另一个人苦苦挣扎:
apple.a > banana.b > banana.b > carrot-c > banana.b > apple.a > carrot-c > banana.b > apple.a
我想要实现的是检查连续出现的情况,所以结果应该是
apple.a1 > banana.b1 > banana.b2 > carrot-c1 > banana.b1 > apple.a1 > carrot-c1 > banana.b1 > apple.a1
我已经尝试了几种解决方案:
Count consecutive TRUE values within each block separately
Counting the number of occurrences of a value in R
R: count consecutive occurrences of values in a single column
仅列出其中的一些,但是似乎没有一个对我有用,并且我无法达到预期的效果。我试图将strsplit
与unlist
,sequence
,rle
和其他几个功能组合在一起,但无法解决我的问题。
为了使事情更清晰:数据框有几列,单词序列存储在其中一列中。
答案 0 :(得分:1)
将各个部分放在一起:这是my comment on your previous question和我的部分回答Count consecutive TRUE values within each block separately的组合。使用rleid
包中的便捷功能rowid
和data.table
。
两个长度不同的字符串的玩具数据:
s <- c("a > a > b > b > b > a > b > b", "c > c > b > b > b > c > c")
library(data.table)
lapply(strsplit(s, " > "), function(x) paste0(x, rowid(rleid(x)), collapse = " > "))
# [[1]]
# [1] "a1 > a2 > b1 > b2 > b3 > a1 > b1 > b2"
#
# [[2]]
# [1] "c1 > c2 > b1 > b2 > b3 > c1 > c2"