Rbind 行差

Rbind Difference of rows

我想确定每一行的差异,并在末尾绑定总差异。以下是示例数据集:

DATE <- as.Date(c('2016-11-28','2016-11-29'))
TYPE <- c('A', 'B')
Revenue <- c(2000, 1000)
Sales <- c(1000, 4000)
Price <- c(5.123, 10.234)
Material <- c(10000, 7342)
df<-data.frame(DATE, TYPE, Revenue, Sales, Price, Material)

df

        DATE TYPE Revenue Sales  Price Material
1 2016-11-28    A    2000  1000  5.123    10000
2 2016-11-29    B    1000  4000 10.234     7342

如何计算每列的差异以产生此总数:

        DATE TYPE Revenue Sales  Price Material
1 2016-11-28    A    2000  1000  5.123    10000
2 2016-11-29    B    1000  4000 10.234     7342
3 DIFFERENCE        -1000  3000  5.111    -2658

我可以很容易地按列完成,但很难按行完成。

如有帮助将不胜感激!

由于 'DATE' 是 Date class,我们可能需要将其更改为 character,然后再继续 rbinding 字符串 "DIFFERENCE".除此之外,对 'df' 的数字列进行子集化,用 lapply 循环它,得到差异,用 'DATE' 和 'TYPE' 连接,用 rbind 连接原始数据集。

df$DATE <- as.character(df$DATE)
rbind(df, c(DATE = "DIFFERENCE", TYPE= NA, lapply(df[-(1:2)], diff)))
#        DATE TYPE Revenue Sales  Price Material
#1 2016-11-28    A    2000  1000  5.123    10000
#2 2016-11-29    B    1000  4000 10.234     7342
#3 DIFFERENCE <NA>   -1000  3000  5.111    -2658