我有这个数据框:
Button,Intensity,Acc,Intensity,RT,Time
0,30,0,0,0,77987.931
1,30,1,13.5,0,78084.57
1,30,1,15,0,78098.624
我想添加一个列,它是两个TIME计数之间的差值,例如:
Button,Intensity,Acc,Intensity,RT,Time, DELTA
0,30,0,0,0,77987.931, 0
1,30,1,13.5,0,78084.57, 96.639
1,30,1,15,0,78098.624, 14.054
我是R的新手,所以我不知道从哪里开始。谢谢!
答案 0 :(得分:1)
您可以使用lag
包中的dplyr
功能。
# Create example data
dt <- read.csv(text = "Button, Intensity, Acc, Intensity, RT, Time
0, 30, 0, 0, 0, 77987.931
1, 30, 1, 13.5, 0, 78084.57
1, 30, 1, 15, 0, 78098.624")
# Load package
library(dplyr)
dt2 <- dt %>%
# Calculate the lag difference
mutate(Delta = Time - lag(Time)) %>%
# Replace NA with 0
mutate(Delta = ifelse(is.na(Delta), 0, Delta))
答案 1 :(得分:1)
我们可以使用base R
来删除第一个元素和元素,取差异然后在开头追加0
df1$Delta <- with(df1, c(0, Time[-1]-Time[-nrow(df1)]))
df1$Delta
#[1] 0.000 96.639 14.054
或另一个选项是data.table
我们转换了&#39; data.frame&#39;到data.table
并使用:=
shift
新列
library(data.table)
setDT(df1)[, Delta := Time - shift(Time, fill = Time[1L])]