[英]R programming: How can I compute the difference between two cells in a data frame and save them in a new column
Trying to learn R and am stuck on an autocorrelation example. 试图学习R并坚持自相关的例子。 I want to regress the difference in x against the difference in y. 我想回归x中的差异与y的差异。 I have x and y in a data frame, and would like the difference of x2 - x1 to be saved in a new column say dx. 我在数据框中有x和y,并希望将x2 - x1的差异保存在一个新列中,例如dx。 I have no idea how to go about this. 我不知道该怎么做。
what I have: 是)我有的:
data1 数据1
x y
5 3
8 9
3 1
1 5
. .
. .
. .
what I would like to get: 我想得到什么:
data1.dif
x y dx dy
5 3 NA NA
8 9 3 6
3 1 -5 -8
1 5 -2 4
. . . .
. . . .
Use diff
with transform
: 使用带transform
diff
:
dat <- read.table(text="x y
5 3
8 9
3 1
1 5", header=T)
transform(dat, dx=c(NA, diff(x)), dy=c(NA, diff(y)))
Yielding: 产量:
x y dx dy
1 5 3 NA NA
2 8 9 3 6
3 3 1 -5 -8
4 1 5 -2 4
And as og dplyr : 和og dplyr一样 :
library(dplyr)
dat %>%
mutate(dx=c(NA, diff(x)), dy=c(NA, diff(y)))
Use diff
, and stick an NA to the beginning of the resulting vectors. 使用diff
,并将NA粘贴到结果向量的开头。
eg 例如
data1 <- read.table(text=' x y
1 5 3
2 8 9
3 3 1
4 1 5')
# diff calculates the difference between consecutive pairs of
# vector elements
diff(data1$x)
[1] 3 -5 -2
# apply diff to each column of data1, bind an NA row to the beginning,
# and bind the resulting columns to the original df
data1.dif <- cbind(data1, rbind(NA, apply(data1, 2, diff)))
names(data1.dif) <- c('x', 'y', 'dx', 'dy')
data1.dif
x y dx dy
1 5 3 NA NA
2 8 9 3 6
3 3 1 -5 -8
4 1 5 -2 4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.