运行增量-数据帧行上的滞后差异

问题描述

我有一个数据框,例如

solve :-
    length(X,6),% there are six students
    member([manuel,19,_,_],X),% Manuel is 19 years old
    member([_,20,win],% 20 years old student studies win
    ...

我想创建一个新的数据框(df2),使company列保持原样。 1980年和1983年的值应通过使用当前值减去先前值来计算。所以基本上,我想要一个产生滚动增量的数据帧。

df1 <- data.frame(Company = c('A','B','C','D','E'),`X1980` = c(1,5,3,8,13),`X1981` = c(20,13,23,11,29),`X1982` = c(33,32,31,41,42),`X1983` = c(45,47,53,58,55))

感谢您的帮助!如果我有什么办法可以改善这个问题,那就告诉我。

解决方法

您可以在每行的第一个值后加上m

NA

您还可以使用df1[-1] <- t(apply(df1[-1],1,function(x) c(NA,diff(x)))) df1 # Company X1980 X1981 X1982 X1983 #1 A NA 19 13 12 #2 B NA 8 19 15 #3 C NA 20 8 22 #4 D NA 3 30 17 #5 E NA 16 13 13 函数。

tidyverse
,

我们可以使用rowDiffs中的matrixStats

library(matrixStats)
df1[-1] <-  cbind(NA,rowDiffs(as.matrix(df1[-1])))

-输出

df1
#  Company X1980 X1981 X1982 X1983
#1       A    NA    19    13    12
#2       B    NA     8    19    15
#3       C    NA    20     8    22
#4       D    NA     3    30    17
#5       E    NA    16    13    13