R:从自身中减去第一行,并从列中的下一行减去后续行,并对多列执行此操作

时间:2019-01-11 22:35:06

标签: r dplyr

我在DF中有很多组,它们的时间序列数据不是从0开始的。我想通过将每组的第一行中的值设置为0来标准化我的数据,这样所有FrameTime和关联值都被设置到0。为此,我需要从自身中减去第一行的值,然后从下一行中减去下一行的值,依此类推。我想要一个允许我在mutate_at()等许多列上执行此操作的函数。

我尝试过

tmp2 <- tmp %>%
  group_by(Name,StimulusName) %>%
  mutate_at(8:37, funs(c(first(.), (. - first(.))[-1])) )

但是这会从所有其他行中减去第一行的值,而并不是我真正需要的。

1 个答案:

答案 0 :(得分:0)

您要使用dplyr的lag函数来获取上一行的值。在滞后函数中,您想使用dplyr的第一个函数将默认值设置为第一个值。我在下面创建了一个示例:

for folder, subs, files in os.walk(unicode(docs_dir, 'utf-8')):
    for filename in files:
        if not filename.startswith('.'):
            file_path = os.path.join(folder, filename)