Слияние фреймов данных в R - PullRequest
1 голос
/ 26 января 2012

Допустим, у меня есть два фрейма данных.Каждый из них имеет столбцы DAY, MONTH и YEAR вместе с одной другой переменной, C и P, соответственно.Я хочу объединить два фрейма данных двумя разными способами.Сначала я объединяю данные:

test<-merge(data1,data2,by.x=c("DAY","MONTH","YEAR"),by.y=c("DAY","MONTH","YEAR"),all.x=T,all.y=F)

Это прекрасно работает.Второе слияние - это то, с чем у меня проблемы.Итак, в настоящее время я объединил значение для 5 января 1996 года из data1 и значение для 5 января 1996 года из data2 в один фрейм данных, но теперь я хотел бы объединить третье значение в каждой строке нового фрейма данных.В частности, я хочу объединить значение для 4 января 1996 года из data2 с двумя значениями от 5 января 1996 года. Любые советы по гибкости объединения таким образом?

пример данных:

data1
C DAY MONTH YEAR
1   1     1 1996
6   5     1 1996
5   8     1 1996
3  11     1 1996
9  13     1 1996
2  14     1 1996
3  15     1 1996
4  17     1 1996    

data2
P DAY MONTH YEAR
1   1     1 1996
4   2     1 1996
8   3     1 1996
2   4     1 1996
5   5     1 1996
2   6     1 1996
7   7     1 1996
4   8     1 1996
6   9     1 1996
1  10     1 1996
7  11     1 1996
3  12     1 1996
2  13     1 1996
2  14     1 1996
5  15     1 1996
9  16     1 1996
1  17     1 1996

1 Ответ

2 голосов
/ 26 января 2012

Создайте новый столбец с типом Date, а не просто целыми числами дня, месяца и года. Вы можете использовать as.Date () для этого, хотя вам нужно будет найти правильный формат format = аргумент с учетом вашей строки. Давайте назовем этот столбец D1. Теперь выполните data1 $ D2 = data1 $ D1 + 1. Ключевым моментом здесь является то, что типы Date допускают простую арифметику дат. Теперь просто объедините с помощью x = D1 и y = D2.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...