Я пытался много кодов объединить мелкие кадры данных в R, но всегда получаю ошибку - PullRequest
0 голосов
/ 22 апреля 2019

Обновление: проблема неуместна, мне не следует называть имя переменной как «2013»

У меня есть несколько фреймов данных, я хочу объединить их вместе, но всегда получаю ошибку.Я хочу объединить их по переменной («Дата» и «Время»), каждый фрейм данных имеет одинаковое значение для «Дата» и «Время».

Это то, что я пробовал:

> list2013 <- list(data1, data2, data3, data4, data5, data6, data7)
> 2013 <- Reduce(function(x, y) merge(x, y, all = TRUE), list2013, accumulate = FALSE)

Error in 2013 <- Reduce(function(x, y) merge(x, y, all = TRUE), list2013,  
:  invalid (do_set) left-hand side to assignment

Кадры данных выглядят так:

head(data1)
        Date  Time  Value_1
1 01/01/2013 00:00     84
2 01/01/2013 00:15     71
3 01/01/2013 00:30     73
4 01/01/2013 00:45     73
5 01/01/2013 01:00     73
6 01/01/2013 01:15     80

 head(data2)
        Date  Time  Value_2
1 01/01/2013 00:00      38
2 01/01/2013 00:15      29
3 01/01/2013 00:30      27
4 01/01/2013 00:45      32
5 01/01/2013 01:00      36
6 01/01/2013 01:15      40

head(data3)
        Date  Time  Value_3
1 01/01/2013 00:00      23
2 01/01/2013 00:15      13
3 01/01/2013 00:30      11
4 01/01/2013 00:45      21
5 01/01/2013 01:00      27
6 01/01/2013 01:15      31

Ожидаемый результат выглядит следующим образом:

      Date  Time  Value_1  Value_2  Value_3
1 01/01/2013 00:00     84      38        23
2 01/01/2013 00:15     71      29        13
3 01/01/2013 00:30     73      27        11
4 01/01/2013 00:45     73      32        21   
5 01/01/2013 01:00     73      36        27
6 01/01/2013 01:15     80      40        31

1 Ответ

0 голосов
/ 22 апреля 2019

Нужно ли здесь вызывать анонимную функцию?Можем ли мы просто вызвать слияние непосредственно в функции Reduce?

z <- data.frame(id = c(1,2,3,4),a =c(1,2,3,4), b0 = c(4,3,2,1))
x <- data.frame(id = c(1,2,3,4),a =c(1,2,3,4), b3 = c(6,3,2,1))
y <- data.frame(id = c(1,2,3,4),a =c(1,2,3,4), z1 = c(4,3,2,1))

l <- list(x,y,z)

Reduce(merge, l)

#output
 id a b3 z1 b0
  1 1  6  4  4
  2 2  3  3  3
  3 3  2  2  2
  4 4  1  1  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...