2010-06-18 13 views
0

J'ai une liste des comtés dans chaque état qui ont reçu le statut de non-réalisation dans les années 1995-2005.IN R compte les données hiérarchiques

Je veux connaître le nombre de comtés dans chaque état qui ont reçu ce statut chaque année.

Si mes données sont formatées comme celui-ci,

State1 Country1 YR1 Yr2 Yr3 Yr4... 
State1 Country2 YR1 Yr2 Yr3 Yr4 
State2 County1 Yr1 Yr2..... 

Chaque variable d'année pourrait avoir un 1 ou un zéro, car un comté peut gagner ou perdre ce statut dans une période de temps.

Je dois compter chaque année combien de comtés dans chaque état ont un statut de non-conformité (YRx = 1), mais je ne peux pas penser à la façon de le faire.

Répondre

0

Ces données sont-elles organisées en tant que données? Si oui, comment les lignes sont-elles définies? Si vos données ont été organisées de cette façon:

State County Year Attainment 
State1 County1 1  1 
State1 County1 2  0 
State1 County1 3  1 
State1 County1 4  1 
State1 County2 1  1 
State1 County2 2  1 
... 

Ensuite, il serait possible d'obtenir le type de données de synthèse que vous recherchez avec 1 ligne de code. Espérons que votre notation signifie que vos données sont organisées comme ceci:

State County Yr1 Yr2 Yr3 Yr4 
State1 County1 1 0 1 1 
State1 County2 1 1 1 1 

Utilisez melt() du paquet reshape pour obtenir de ce format à celui défini ci-dessus.

new.df <- melt(df, id = 1:2) 

Il appellera la variable Année variable et la variable value Niveau. Maintenant, avec l'utilisation intelligente de la fonction cast, également à partir du package reshape, vous pouvez obtenir le résumé que vous voulez.

counties <- cast(new.df, State ~ value, fun = length) 
head(counties) 

Toutefois, si vos données sont organisées de telle sorte que chaque Etat, comté et l'année est une colonne, et il est seulement 1 ligne longue, je pense que votre meilleure prochaine étape serait de reformater les données en dehors de R afin que ça ressemble au moins à mon deuxième exemple.

+0

il est organisé la deuxième manière. Je pensais avoir formaté ma question correctement, mais quand je l'ai posté, il a fusionné en une seule ligne. – Alison

+0

JoFrhwld- Je l'ai fait, mais il me joue les résumés pour toutes les années, pas total pour chaque année. Je travaille toujours sur ce problème, si vous avez des suggestions, je l'apprécierais. Votre aide m'a plus loin au moins !! – Alison

2

J'ai utilisé l'exemple suivant:

data <- read.table(textConnection(" 
state county Yr1 Yr2 Yr3 Yr4 
state1 county1 1 0 0 1 
state1 county2 0 0 0 0 
state1 county3 0 1 0 0 
state1 county4 0 0 0 0 
state1 county5 0 1 0 1 
state2 county6 0 0 0 0 
state2 county7 0 0 1 0 
state2 county8 1 0 0 1 
state2 county9 0 0 0 0 
state2 county10 0 1 0 0 
state3 county11 1 1 1 1 
state3 county12 0 0 0 0 
state3 county13 0 1 1 0 
state3 county14 0 0 0 1 
state4 county15 0 0 0 0 
state4 county16 1 0 1 0 
state4 county17 0 0 0 0 
state4 county18 1 1 1 1 
"), header = T) 

library(reshape) 
data2 <- melt(data, id = c("state", "county")) 
cast(data2, state ~ variable, fun = sum) 

Résultat:

state Yr1 Yr2 Yr3 Yr4 
1 state1 1 2 0 2 
2 state2 1 1 1 1 
3 state3 1 2 2 2 
4 state4 2 1 2 1 
+0

wow, merci beaucoup. J'ai lutté là-dessus tout l'après-midi. Je vais l'essayer. – Alison