2017-10-07 22 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

あなたは解決策が、この問題のためにwork`sこと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

を使用する必要があります。しかし、私は以前のテーブルの列を蓄積することができるソリューションが必要です。 –

+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 $ Death-died.after.bd $ bd ) /365.25))+ PY [as.character(died.after.bd $ Age)、as.character(year)]) –

関連する問題