Вычесть части одного кадра из другого кадра (и сопоставить заголовки) - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь вычесть один фрейм данных (input2) из ​​другого (input1), но столбцы расположены в другом порядке, а первый столбец - строка даты.

Я думал, что получу покончить с чем-то простым, например, output = input1 - input2, но очевидно, что не-число c является проблемой. Я также не уверен, что это будет соответствовать заголовкам для меня (я полагаю, нет).

Есть ли простой способ сделать это без циклического прохождения кадра?

input1 <- structure(list(X = c("Standard", "2020-03-24_1", "2020-03-23_2", 
"2020-03-20_3", "2020-03-19_4", "2020-03-18_5", "2020-03-17_6"
), Frank = c(228L, 582L, 129L, 419L, 255L, 574L, 424L), Ben = c(487L, 
540L, 162L, 366L, 292L, 283L, 211L), Millie = c(314L, 371L, 506L, 
143L, 448L, 381L, 369L), Simon = c(428L, 351L, 148L, 111L, 184L, 
225L, 276L), John = c(115L, 212L, 161L, 167L, 517L, 224L, 148L
)), row.names = c(NA, 7L), class = "data.frame")


input2 <- structure(list(X = c("Standard", "2020-03-24_1", "2020-03-23_2", 
"2020-03-20_3", "2020-03-19_4", "2020-03-18_5", "2020-03-17_6"
), Ben = c(315L, 297L, 284L, 347L, 581L, 231L, 365L), Frank = c(562L, 
556L, 174L, 296L, 172L, 359L, 125L), John = c(583L, 471L, 312L, 
258L, 450L, 142L, 478L), Millie = c(181L, 327L, 473L, 232L, 469L, 
443L, 462L), Simon = c(178L, 121L, 277L, 240L, 585L, 106L, 313L
)), row.names = c(NA, 7L), class = "data.frame")

1 Ответ

2 голосов
/ 26 марта 2020

Вы можете упорядочить столбцы в одном из фреймов данных на основе имен во втором фрейме и вычесть значения напрямую. Использование -1, так как мы хотим игнорировать первый столбец.

input1[-1] - input2[names(input1)[-1]]

#  Frank  Ben Millie Simon John
#1  -334  172    133   250 -468
#2    26  243     44   230 -259
#3   -45 -122     33  -129 -151
#4   123   19    -89  -129  -91
#5    83 -289    -21  -401   67
#6   215   52    -62   119   82
#7   299 -154    -93   -37 -330
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...