[英]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.