繁体   English   中英

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

[英]R: subtracting the first row from itself and subsequent rows from next row in column & do this for multiple columns

我的 DF 中有许多组的时间序列数据不是从 0 开始的。我想通过将每个组的第一行中的值设置为 0 来规范化我的数据,以便 FrameTime 和相关值都设置为 0。为此,我需要从自身减去第一行的值,然后从下一行减去下一行的值,依此类推。 我想要一个允许我在许多列上执行此操作的函数,例如 mutate_at()。

我试过了

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

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

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

library(dplyr)
example.data <-
  data.frame(a = c(1, 3, 6, 2, 4 ,7),
             b = c("red", "red", "red", "blue", "blue", "blue"))

example.data %>%
  group_by(b) %>%
  mutate(c = a - lag(a, n = 1, default = first(a)))

我假设你有一列数据帧A包含数值N1,N2,N3,...,N,并且要变异的新列( B与值N(N)) - N(N-1)从A列。 第一个值将是零,值 2 将是 n2 - n1,值 3 将是 n3 - n2,依此类推。 您可以在 R 中使用以下内容来实现这一点。

library(dplyr)

data %>%
    mutate(B = A - first(x = A))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM