2017-10-07 64 views
1

假設我有矩陣D,它由每年特定年齡的死亡人數組成。如何在沒有循環的情況下向data.frame添加多個值?

我想填充此矩陣與適當的死亡計數存儲在 向量年齡,但下面的代碼給了我錯誤的答案。我應該如何編寫代碼而不進行循環?

# Year and age grid for tables 
Years=c(2007:2017) 
Ages=c(60:70) 

#Data.frame of deaths 
D=data.frame(matrix(ncol=length(Years),nrow=length(Ages))); D[is.na(D)]=0 
colnames(D)=Years 
rownames(D)=Ages 

Age=c(60,61,62,65,65,65,68,69,60) 
year=2010 

D[as.character(Age),as.character(year)]<- 
D[as.character(Age),as.character(year)]+1 
D[,'2010'] # 1 1 1 0 0 1 0 0 1 1 0 
# Should be 2 1 1 0 0 3 0 0 1 1 0 

回答

0

您需要使用table

AgeTable = table(Age) 
D[names(AgeTable), as.character(year)] = AgeTable 
D[,'2010'] 
[1] 2 1 1 0 0 3 0 0 1 1 0 
+0

該解決方案work's這個問題。但我需要的解決方案,可以積累以前的表柱。 –

+0

@Sattel那麼,您如何獲得前幾年存儲的數據?請提供使我們能夠迴應您的實際問題的數據。 – G5W

+0

假設我有這樣的代碼行,我的數據是。每次通話都有多個年齡的重複。但代碼不會累積它。數據:https://drive.google.com/open?id=0BxtjNizJ0NDlWmdsb3NRVzhDUm8 PY [as.character(died.after.bd $ Age),as.character(year)] =(as.numeric(((died.after .bd $ Deathdied.after.bd $ bd ) /365.25))+ PY [as.character(died.after. $ Age),as.character(year)]) –

相關問題