我需要實現以下功能(理想情況下在R或SQL中):給定兩個數據框(有一個用於userid的列,其餘的colums是布爾值屬性(它們只允許爲0或1))我需要返回具有兩列(userid和count)的新數據框,其中count是兩個表中每個用戶的0和1的匹配數。用戶F可能發生在兩個數據幀中,或者可能發生在一個數據幀中。在最後一種情況下,我需要爲該用戶數返回NA。我寫一個例子:如何使用SQL或R庫sqldf來完成此任務?
DF1
ID c1 c2 c3 c4 c5
1 0 1 0 1 1
10 1 0 1 0 0
5 0 1 1 1 0
20 1 1 0 0 1
3 1 1 0 0 1
6 0 0 1 1 1
71 1 0 1 0 0
15 0 1 1 1 0
80 0 0 0 1 0
DF2
ID c1 c2 c3 c4 c5
5 1 0 1 1 0
6 0 1 0 0 1
15 1 0 0 1 1
80 1 1 1 0 0
78 1 1 1 0 0
98 0 0 1 1 1
1 0 1 0 0 1
2 1 0 0 1 1
9 0 0 0 1 0
我的函數必須返回是這樣的:(下面是一個子集)
DF_Return
ID Count
1 4
2 NA
80 1
20 NA
.
.
.
能給我什麼建議,從事這項運動?我不是那種sql的專家。
我把代碼放在R中來生成我上面使用的實驗。
id1=c(1,10,5,20,3,6,71,15,80)
c1=c(0,1,0,1,1,0,1,0,0)
c2=c(1,0,1,1,1,0,0,1,0)
c3=c(0,1,1,0,0,1,1,1,0)
c4=c(1,0,1,0,0,1,0,1,1)
c5=c(1,0,0,1,1,1,0,0,0)
DF1=data.frame(ID=id1,c1=c1,c2=c2,c3=c3,c4=c4,c5=c5)
DF2=data.frame(ID=c(5,6,15,80,78,98,1,2,9),c1=c2,c2=c1,c3=c5,c4=c4,c5=c3)
非常感謝提前。 最好的問候!
哪些DBMS您使用的? PostgreSQL的?甲骨文? DB2? .. – 2012-04-13 17:08:00
你好,我正在使用Microsoft SQL Server 2005!謝謝 – Nestorghh 2012-04-13 17:14:42