語言,R創建使用兩個單獨的數據集彙總表data.table [R
套餐:data.table
我有兩個數據集:一,所有的國家名稱列(關鍵數據集)還有一個關於一個地區是出生國的人口的數據。我想要製作每個國家出生人數的data.table。現在可能會有一些國家沒有參與者出生。我如何使用data.table命令創建這樣的表格?
例子:
CountryKey = data.table(Country = LETTERS[1:5])
DT = data.table(Person = c(1,2,3,4,5,6,7), Birth = LETTERS[c(1,1,2,3,2,1,3)])
DT
Person Birth
1: 1 A
2: 2 A
3: 3 B
4: 4 C
5: 5 B
6: 6 A
7: 7 C
CountryKey
Country
1: A
2: B
3: C
4: D
5: E
DT[, j = .(.N), by = .(Birth)]
Birth N
1: A 3
2: B 2
3: C 2
由於當時沒有人出生在d和E他們不輸出顯示。但是我想看到它們的值爲零。
@Frank回答了這個問題。
DT[CountryKey, on=c(Birth = "Country"), .N, by=.EACHI]
Birth N
1: A 3
2: B 2
3: C 2
4: D 0
5: E 0
但是,CountryKey文件在其行中可能不是唯一的。假設它只是一些類似於DT的數據集,並且許多行都在同一個國家。那我們怎麼做呢?
CountryKey = data.table(Country =c('A','B','B','C','C','D','E','D','D'))
Country
1: A
2: B
3: B
4: C
5: C
6: D
7: E
8: D
9: D
上述解決方案給出的結果不是我想要的。我只想看到每個國家的唯一條目。
DT[CountryKey, on=c(Birth = "Country"), .N, by=.EACHI]
Birth N
1: A 3
2: B 2
3: B 2
4: C 2
5: C 2
6: D 0
7: E 0
8: D 0
9: D 0
@弗蘭克的回答部分作品:
DT[unique(CountryKey), on=c(Birth = "Country"), .N, by=.EACHI]
Birth N
1: A 3
2: B 2
3: C 2
4: D 0
5: E 0
但是,如果CountryKey有幾個專欄,它沒有:由@Frank
CountryKey = data.table(Country =c('A','B','B','C','C','D','E','D','D'),
Somevalue = sample(x = 3, size = 9, replace = T))
DT[unique(CountryKey), on=c(Birth = "Country"), .N, by=.EACHI]
Birth N
1: A 3
2: B 2
3: B 2
4: C 2
5: C 2
6: D 0
7: E 0
8: D 0
解決方案:
DT[i = unique(CountryKey$Country), on="Birth", .N, by=.EACHI]
P.S. : You should have 1.9.7. Earlier versions will give an error.
您是否注意到我早先的評論? http://stackoverflow.com/q/25869543/和'DT [CountryKey,on = c(Birth =「Country」),.N,by = .EACHI]' – Frank
是的,我已經寫了,但是你沒有給我足夠的時間。謝謝。 – ilyas
好的,沒問題。我會將它標記爲一個重複,但可以撤消,如果需要 – Frank