Menggabungkan bingkai data di R

Katakanlah saya memiliki dua bingkai data. Masing-masing memiliki kolom HARI, BULAN, dan TAHUN serta satu variabel lainnya, C dan P. Saya ingin menggabungkan dua bingkai data dengan dua cara berbeda. Pertama, saya menggabungkan berdasarkan data:

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

Ini bekerja dengan sempurna. Penggabungan kedua adalah yang bermasalah dengan saya. Jadi, saat ini saya telah menggabungkan nilai 5 Januari 1996 dari data1 dan nilai 5 Januari 1996 dari data2 ke dalam satu bingkai data, tetapi sekarang saya ingin menggabungkan nilai ketiga ke setiap baris bingkai data baru. Secara khusus, saya ingin menggabungkan nilai untuk 4 Januari 1996 dari data2 dengan dua nilai dari 5 Januari 1996. Adakah tips agar penggabungan menjadi fleksibel dengan cara ini?

contoh data:

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

person Jota    schedule 26.01.2012    source sumber
comment
sulit untuk mengatakannya tanpa detail lebih lanjut tentang tanggal yang Anda hadapi. kemungkinan besar Anda dapat mengonversinya menjadi tanggal lalu menjadi numerik dan membulatkannya sehingga hari-harinya hampir sama... atau jika Anda hanya memiliki satu tanggal per bulan, gabungkan hanya bulan dan tahun... dapatkah Anda memberikan sedikit contoh data sehingga kami dapat melihat apa yang sedang Anda kerjakan? juga, sebagai catatan tambahan, Anda tidak perlu menentukan by.x dan by.y. merge akan menemukan kolom yang cocok dan tetap menggabungkannya.   -  person Justin    schedule 26.01.2012


Jawaban (1)


Buat kolom baru dengan tipe Tanggal, bukan hanya bilangan bulat hari, bulan, tahun. Anda dapat menggunakan as.Date() untuk melakukan ini, meskipun Anda perlu mencari format argumen format= yang tepat berdasarkan string Anda. Sebut saja kolom itu D1. Sekarang lakukan data1$D2 = data1$D1 + 1. Poin kuncinya di sini adalah tipe Tanggal memungkinkan aritmatika tanggal sederhana. Sekarang gabungkan saja dengan x=D1 dan y=D2.

Jika itu membingungkan, intinya adalah Anda perlu menyembunyikan kolom Anda ke tipe Tanggal sehingga Anda dapat melakukan aritmatika tanggal.

person frankc    schedule 26.01.2012