在这种类型的数据帧中:

df <- data.frame(
  x = c(3,3,1,12,2,2,10,10,10,1,5,5,2,2,17,17)
)

如何创建一个新列,只记录x个值(比如3-20)的子集的运行长度ID?

我自己的try 只成功地在应该中断运行长度计数的地方插入NA;但在内部,计数似乎是不间断的:

library(data.table)
df %>%
  mutate(rle = ifelse(x %in% 3:20, rleid(x), NA))
    x rle
1   3   1
2   3   1
3   1  NA
4  12   3
5   2  NA
6   2  NA
7  10   5
8  10   5
9  10   5
10  1  NA
11  5   7
12  5   7
13  2  NA
14  2  NA
15 17   9
16 17   9

expected result人:

    x rle
1   3   1
2   3   1
3   1  NA
4  12   2
5   2  NA
6   2  NA
7  10   3
8  10   3
9  10   3
10  1  NA
11  5   4
12  5   4
13  2  NA
14  2  NA
15 17   5
16 17   5

推荐答案

在R基中:

df[df$x %in% 3:20, "rle"] <- data.table::rleid(df[df$x %in% 3:20, ])

    x rle
1   3   1
2   3   1
3   1  NA
4  12   2
5   2  NA
6   2  NA
7  10   3
8  10   3
9  10   3
10  1  NA
11  5   4
12  5   4
13  2  NA
14  2  NA
15 17   5
16 17   5

left_join人:

left_join(df, df %>% 
  filter(x %in% 3:20) %>% 
    distinct() %>% 
    mutate(rle = row_number()))

Joining, by = "x"
    x rle
1   3   1
2   3   1
3   1  NA
4  12   2
5   2  NA
6   2  NA
7  10   3
8  10   3
9  10   3
10  1  NA
11  5   4
12  5   4
13  2  NA
14  2  NA
15 17   5
16 17   5

R相关问答推荐

在连续尺度上转置标签[瀑布图,R]

Ggplot2中的重复注记

如何从像glm这样的模型中提取系数表的相关性?

如何删除仅在数据集顶部和底部包含零的行

从服务器在Shiny中一起渲染图标和文本

过滤名称以特定字符串开头的文件

有没有一种方法可以同时对rhandsontable进行排序和从rhandsontable中删除?

如何移除GGPlot中超出与面相交的任何格网像元

使用未知字符数(不受限制的最大长度)的Lookback有什么好的替代方案?

将具有坐标列表列的三角形转换为多个多边形

无法保存gglot的所有pdf元素

对一个数据帧中另一个数据帧中的值进行计数

如何在R曲线图弹出窗口中更改r和theta标签

R代码来迭代列表,将它们组合成一个带有分组变量的数据框?

用从先前非NA值开始的递增序列替换NA值

如何比较R中每行数据帧中的嵌套列表?

GGPLOT:添加具有不同类别数量的观测数量的标签

iGraph中的最大Jaccard相似度

为什么as.numic()函数在R中产生不同的结果?

R函数的多个类似输入-使用列表提供它们的问题