【发布时间】:2018-03-25 15:53:16
【问题描述】:
我已经使用此处的帮助板来识别 R 中的运行。例如:
temp.data = rle(c(NA, NA, 1, NA, NA, 1, NA, 1, 1, 1, NA, NA, NA))
output = temp.data$lengths[temp.data$value==1]
这里,“输出”返回以下内容:
NA NA 1 NA NA 1 NA 3 NA NA NA
这行得通,告诉我有 1、1 和 3 次运行。但是,除了我上面所做的之外,我还想确定具有某种程度的“宽恕”的运行。例如,如果 1 表示事件发生,而 NA 表示事件未发生,我希望允许有 1 的间隙。因此,我希望我的输出为:
NA NA 1 NA NA 5 NA NA NA
或者,它可以简单地返回有 1 和 5 的运行。我正在尝试在具有几列和数百行的数据框中执行此操作,每个单元格都是 1 和 NA 的列表,因此我会喜欢自动化这个过程。谢谢!
【问题讨论】:
-
你想用 1 替换前导和尾随单个
NAs 吗?比如x1 = c(NA, 1, NA, 1, 1, NA)。 -
不,但后来我意识到我没有澄清这一点。您的原始答案效果很好。
标签: r run-length-encoding