2017-10-07 3 views
1

Angenommen, ich habe Matrix D, die aus Todeszählungen pro Jahr nach bestimmten Altersstufen besteht.Wie fügt man data.frame ohne Schleife mehrere Werte hinzu?

Ich möchte diese Matrix mit entsprechenden Todeszahlen, die in Vektor Alter gespeichert ist, aber der folgende Code gibt mir falsche Antwort. Wie soll ich den Code schreiben, ohne eine Schleife zu machen?

# 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 

Antwort

0

Sie benötigen 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

zu verwenden, die Lösung für dieses Problem work's. Aber ich brauche die Lösung, die vorherige Tabellensammlungen ansammeln kann. –

+0

@Sattel Nun, wie haben Sie die Daten für die letzten Jahre gespeichert? Bitte geben Sie Daten an, die uns erlauben, auf Ihr tatsächliches Problem zu reagieren. – G5W

+0

Angenommen, ich habe eine Codezeile wie diese, und meine Daten sind. Ich habe mehrere Wiederholungen des Alters für jeden Anruf. Aber der Code akkumuliert es nicht. Daten: https://drive.google.com/open?id=0BxtjNizJ0NDlWmdsb3NRVzhDUm8 PY [as.character (gestorben.nach.bd $ Age), as.zeichen (Jahr)] = (as.numeric ((.nach.nach .bd $ Death-died.after.bd $ bd ) /365.25))+ PY [as.character (gestorben.nach.bd $ Age), as.zeichen (Jahr)]) –

Verwandte Themen