我想确定每一行的差异,并在结尾处进行总差异处理。下面是一个示例数据集:
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
我可以轻松地按列进行操作,但却无法按行进行操作。
任何帮助都会非常感谢!
答案 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