簡體   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