3
假設我有以下列表:創建一個衡量的R中增長率的差別矩陣列表
$`1990`
cntry year growth
1 1 1990 1
2 2 1990 2
3 3 1990 14
$`1991`
cntry year growth
4 1 1991 6
5 2 1991 5
6 3 1991 7
代碼來創建列表:
cntry<-c(1,2,3,1,2,3)
year<-c(1990,1990,1990,1991,1991,1991)
growth<-c(1,2,14,6,5,7)
a<-data.frame(cntry,year,growth)
a.split<-split(a, as.factor(a$year))
我想製作的是衡量兩國增長率差異的矩陣清單。
- 在各個矩陣,在生長速率的差異只應如果該國的在列 生長速率比該行中的國家的一個更高的計算。
- 如果在列的生長速率等於或小於該行中的國家的一個 越小,則矩陣應該如果存在至少一個國家與所述組合顯示的0
- 的值NA值, 那麼矩陣應該在各自的字段中顯示0。
結果應該如下:
$`1990`
1 2 3
1 0 1 13
2 0 0 12
3 0 0 0
$`1991`
1 2 3
1 0 0 1
2 1 0 2
3 0 0 0
任何幫助是非常歡迎!
作品完美一如既往,感謝@colonel beauvel!最後一個問題:你如何確保,如果組合中有NA值,則粘貼0? – jsts 2015-02-06 14:30:32
我覺得不能正確理解,你的意思是在a.split中的某個data.frame的增長列中出現NA?在這種情況下,你可以這樣做'lst = lapply(a.split,function(u){u [is.na(u)] = 0; u})'然後應用外部的一行腳本。 – 2015-02-06 14:33:43
這就是我一直在尋找的,謝謝! – jsts 2015-02-06 16:38:15