相关疑难解决方法(0)

在r中查找并替换数字序列

我有一个数据帧,其序列号与下面类似:

data <- c(1,1,1,0,0,1,1,2,2,2,0,0,0,2,1,1,0,1,0,2)
Run Code Online (Sandbox Code Playgroud)

我需要的是找到1,2或3次重复0的所有实例,其中前进和后续数字是相同的 - 即1或2都是2(例如1,0,1或2,0,0,2但是不是2,0,1).

然后我需要用周围的值填充零.

我设法找到并计算连续的零

consec <- (!data) * unlist(lapply(rle(data)$lengths, seq_len))
Run Code Online (Sandbox Code Playgroud)

然后我找到了这些连续零开始的行:

consec <- as.matrix(consec)
first_na <- which(consec==1,arr.ind=TRUE)
Run Code Online (Sandbox Code Playgroud)

但我对替换过程感到困惑

我非常感谢你对此的帮助!

卡尔

replace r sequence

11
推荐指数
2
解决办法
2082
查看次数

根据前面的值按组替换一系列值

我有一个这种形式的数据表(2000000+行,1000+组):

set.seed(1)    
dt <- data.table(id = rep(1:3, each = 5), values = sample(c("a", "b","c"), 15, TRUE))

> dt
    id values
 1:  1      a
 2:  1      c
 3:  1      a
 4:  1      b
 5:  1      a
 6:  2      c
 7:  2      c
 8:  2      b
 9:  2      b
10:  2      c
11:  3      c
12:  3      a
13:  3      a
14:  3      a
15:  3      b
Run Code Online (Sandbox Code Playgroud)

我想在每个 ID 组中替换字符“b”之前的整个字符“a”序列,并且我想用“b”替换它们。所以条件是,如果 "a" 或一系列 "a" 出现在 "b" 之前,则替换所有的 "a"。(实际上,在我的真实表格中,当“b”前面是“a”、“x”或“y”时,应该替换前面的字符,但我应该能够概括)

在上面的例子中,第 …

string replace r sequence data.table

10
推荐指数
2
解决办法
249
查看次数

标签 统计

r ×2

replace ×2

sequence ×2

data.table ×1

string ×1