根据 R 中的单独列标记列中值的第一次连续出现

赞拜

无法弄清楚这个......我在R中有一个像这样的数据集:

x <- c("A", "B", "C", "A", "A", "A", "C", "B", "A", "A", "B", "B", "A", "A", "C", "B","A")
z <- c(1, 1, 1, 1,2, 2, 2, 2, 2, 2, 2,3, 3, 3, 3, 3,3)
y <- c(43, 32, 12, 32, 22, 42, 45, 13, 15, 61, 71, 13, 32, 24, 11, 15,33)
df <- data.frame(x,z,y)

像这样:

x z y
A 1 43
B 1 32
C 1 12
A 1 32
A 2 22
A 2 42
C 2 45
B 2 13
A 2 15
A 2 61
B 2 71
B 3 13
A 3 32
A 3 24
C 3 11
B 3 15
A 3 33

现在我想标记 A 的第一次出现,如果它们在 z 的每个值中是连续的。
理想情况下,最终结果应如下所示:

x z y tag
A 1 43 1
B 1 32 0
C 1 12 0
A 1 32 0
A 2 22 1
A 2 42 1
C 2 45 0
B 2 13 0
A 2 15 0
A 2 61 0
B 2 71 0
B 3 13 0
A 3 32 1
A 3 24 1
C 3 11 0
B 3 15 0
A 3 33 0

我也很高兴就如何重新表述这个问题的标题以使其更直接的建议。谢谢!

原始的

基础解决方案

x <- c("A", "B", "C", "A", "A", "A", "C", "B", "A", "A", "B", "B", "A", "A", "C", "B","A")
z <- c(1, 1, 1, 1,2, 2, 2, 2, 2, 2, 2,3, 3, 3, 3, 3,3)
y <- c(43, 32, 12, 32, 22, 42, 45, 13, 15, 61, 71, 13, 32, 24, 11, 15,33)
df <- data.frame(x,z,y)

within(df, {
  tag <- +(ave(as.character(df$x), df$z, FUN = function(xx) {
    r <- rle(xx %in% 'A')
    r$values[cumsum(r$values) > 1] <- FALSE
    inverse.rle(r)
  }) %in% 'TRUE')
})

#    x z  y tag
# 1  A 1 43   1
# 2  B 1 32   0
# 3  C 1 12   0
# 4  A 1 32   0
# 5  A 2 22   1
# 6  A 2 42   1
# 7  C 2 45   0
# 8  B 2 13   0
# 9  A 2 15   0
# 10 A 2 61   0
# 11 B 2 71   0
# 12 B 3 13   0
# 13 A 3 32   1
# 14 A 3 24   1
# 15 C 3 11   0
# 16 B 3 15   0
# 17 A 3 33   0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 R 中,如何根据一列中的重复值保留行的第一次出现?

使用 R 根据另一列中事件的第一次出现创建开始时间和结束时间列

VBA:根据列中第一次出现的值删除excel行

根据特定条件更改熊猫列中的第一次出现

在 R 中,从第二列的第一次出现更改数据框列

如何在 R 数据框中添加变量第一次和最后一次出现的列?

第一次标记基于参数的记录出现在r数据框中

仅在 R 中每个 id 的列值第一次按行更改时标记

根据其他列中的条件标记列中值的连续出现

根据第一次出现的值生成变量

R:一次根据一列中的条件将整行推到 NA

根据第一次出现更改组中的值

从R中每个组的第一次超过阈值的列中获取值

根据另一列R中的出现选择行

R-Dplyr-get()不适用于每一列,仅使用第一次出现

根据r中单独列中的单个输入,删除列中的一组输入

R,根据单独列中的值删除先前的行

如何根据R中的分组将单独的列值添加到另一列?

R-根据列值的首次出现返回df中行的第一个值

在 R 数据框中查找第一次和最后一次出现的项目

保持字符串直到R中第一次出现模式

检测 R 中两个变量之间的第一次出现

使用R中的匹配函数查找“第一次出现”

如何在R中第一次出现逗号之前删除所有内容

如何根据传单R中的列设置标记颜色

我可以根据多个条件显示第一次出现的值吗?

awk - 根据单元格存储第一次出现

根据R中一列中的连续值有条件地插入行

使用 dplyr 根据 R 中的连续条件创建一列