我有一个看起来像
的列v1 <- c("A","A","A", "B","B","A","A")
我想删除每个重复的字母,直到下一个不同的字符串,所以结构将是
c("A", "","","B", "", "A","")
有关如何在R中执行此操作的任何提示
由于
答案 0 :(得分:-1)
我们可以使用rleid
中的游程长度类型函数(dat.table
)来创建基于重复值的分组索引,应用duplicated
来获取逻辑向量(TRUE)对于重复元素),将向量子集化并将这些重复项转换为''
library(data.table)
v1[duplicated(rleid(v1))] <- ''
v1
#[1] "A" "" "" "B" "" "A" ""
或者我们使用base R
方法通过删除第一个和最后一个元素(v1[-1]
,v1[-length(v1)]
)来比较相邻元素。输出的长度比原始矢量小1。因此与FALSE
连接以使长度相等,将向量子集化并将这些元素更改为''
。
v1[c(FALSE, v1[-1]== v1[-length(v1)])] <- ''
v1 <- c("A","A","A", "B","B","A","A")