Rbind行的差异

时间:2016-12-01 17:58:34

标签: r diff rbind

我想确定每一行的差异,并在结尾处进行总差异处理。下面是一个示例数据集:

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

我可以轻松地按列进行操作,但却无法按行进行操作。

任何帮助都会非常感谢!

1 个答案:

答案 0 :(得分:1)

作为&#39;日期&#39;是Date类,我们可能需要将其更改为character,然后再使用字符串&#34; DIFFERENCE&#34;进行rbind。除此之外,对&lt; df&#39;的数字列进行子集,将其与lapply一起循环,得到差异,与“DATE&#39;”连接。和&#39; TYPE&#39;和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