gpt4 book ai didi

r - 填补 R 中时间序列数据的空白

转载 作者:行者123 更新时间:2023-12-04 07:05:13 26 4
gpt4 key购买 nike

这个问题困扰了我一段时间,因为我一直在寻找一种有效的方法。基本上,我有一个数据框,每行都有一个来自实验的数据样本。我想这应该更多地被视为来自实验的日志文件,而不是用于分析的数据的最终版本。

我遇到的问题是,有时某些事件会记录在数据列中。为了使分析易于处理,我想做的是为事件之间的空单元格“填补空白”,以便数据中的每一行都可以与最近发生的事件相关联。这有点难以解释,但这里有一个例子:

Screenshot of dataframe from RStudio of base dataset

现在,我想把它变成这样:

enter image description here

这样做将使我能够按当前事件拆分数据。在任何其他语言中,我会跳入使用 for 循环来执行此操作,但我知道 R 不适用于那种类型的循环,并且在这种情况下,我有数十万行数据需要排序,所以想知道是否有人可以提供有关快速执行此操作的建议?

非常感谢。

最佳答案

这个问题已经在这个网站上以各种形式被问过很多次了。标准答案是使用 zoo::na.locf。在 [r] 中搜索 na.locf 以查找如何使用它的示例。

这是在 base R 中使用 rle 的替代方法:

d <- data.frame(LOG_MESSAGE=c('FIRST_EVENT', '', 'SECOND_EVENT', '', ''))
within(d, {
# ensure character data
LOG_MESSAGE <- as.character(LOG_MESSAGE)
CURRENT_EVENT <- with(rle(LOG_MESSAGE), # list with 'values' and 'lengths'
rep(replace(values,
nchar(values)==0,
values[nchar(values) != 0]),
lengths))
})
# LOG_MESSAGE CURRENT_EVENT
# 1 FIRST_EVENT FIRST_EVENT
# 2 FIRST_EVENT
# 3 SECOND_EVENT SECOND_EVENT
# 4 SECOND_EVENT
# 5 SECOND_EVENT

关于r - 填补 R 中时间序列数据的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14634448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com