2016-12-01 4 views
0

Я хочу определить разницу в каждой строке и иметь, что общая разница rbinded в конце. Ниже приведен пример набора данных: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 

Я могу легко сделать это с помощью колонок, но возникают проблемы, делая это построчно ,

Любая помощь была бы большой!

+0

Что вы ожидаете от вывода в случае, если имеется более двух строк? –

+0

У вас есть только 2 строки в вашем наборе данных, для которых вы хотите рассчитать разницу? Или больше строк? –

ответ

1

В качестве «DATE» находится Date класс, возможно, его необходимо заменить на character, прежде чем приступить к работе с rbind со строкой «РАЗЛИЧИЯ». Кроме этого, подмножество числовых столбцов «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 
+1

Это отлично поработало, спасибо! –