2017-10-07 100 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)]) –

相关问题