2016-08-10 2 views
0

Utilisation de R. Je suis un débutant. J'ai essayé de rechercher cette erreur/situation particulière et suis venu les mains vides. Ici va:Colonne calculée non reconnue dans Rdcast

J'ai créé une colonne numérique en soustrayant une colonne existante d'une autre colonne

MYDATA$NETREV <- (MYDATA[60] - MYDATA[51]) 

Lorsque je tente de utilisée dcast sur la nouvelle colonne faisant:

NETREV.TREND <- dcast(MYDATA, SCHOOL ~ YEAR, value.var="NETREV") 

Je reçois ce erreur:

Error in `[.data.frame`(value, overall) : undefined columns selected 

J'ai essayé de me référer à la nouvelle colonne par position, value.var=MYDATA[61] et quand je fais ça, je reçois une erreur qui commence par:

Error: value.var (list(OPREVADJ = c(-9280446, -14437883, -12637590, -14365373, -17149995, -13960077, -11458410, -3701678, -861092, -10071075, 23965, -5324362, -5974479, 14275488, -6118691, -7801750, -7838486, -14343695, NA, -17785841, -14357459, -14787673, -480654 ... etc.

En utilisant dcast avec une autre colonne dans mes données fonctionne très bien et fait exactement ce qu'il est censé faire. Désolé, je n'ai pas épelé cela plus tôt. C'est ce que mes données ressemblent à:

SCHOOL YEAR REVENUE EXPENSES 

A 2011 10000000 12000000 

A 2012 15000000 14000000 

A 2013 16000000 15700000 

B 2011 8000000 6000000 

B 2012 7500000 6500000 

B 2013 7770000 5500000 

J'ai créé la nouvelle colonne NETREV (ce qui est évidemment moins les dépenses des revenus)

SCHOOL YEAR REVENUE EXPENSES NETREV 

A 2011 10000000 12000000 -2000000 

A 2012 15000000 14000000 1000000 

A 2013 16000000 15700000 300000 

B 2011 8000000 6000000 2000000 

B 2012 7500000 6500000 1000000 

B 2013 7770000 5500000 2270000 

Je veux que le dcast pour la faire ressembler à la suivante:

SCHOOL 2011 2012 2013 

A -2000000 1000000 300000 

B 2000000 1000000 2270000 
+0

Vérifiez les noms des colonnes. Qu'est-ce que vous obtenez de 'names (MYDATA) [noms (MYDATA)% dans% c (" SCHOOL "," YEAR ")]'? –

+2

Veuillez fournir un exemple reproductible en incluant des données d'échantillon. De bonnes références pour quoi et comment inclure sont ici: [help/mcve] (http://stackoverflow.com/help/mcve) et [exemples reproductibles] (http://stackoverflow.com/questions/5963269/how-to -make-a-great-r-reproductible-exemple). – r2evans

+0

La réponse de @ jgadoury résoudra la fonction immédiate, mais vous ne voudrez probablement pas * utiliser * la fonction d'agrégation par défaut, 'length'. Je recommanderais 'sum' à la place. – Gregor

Répondre

1

Si vous souhaitez accéder aux colonnes d'un data.frame, vous devez utiliser MYDATA[, i]i est votre numéro de colonne.

MYDATA$NETREV <- (MYDATA[, 60] - MYDATA[, 51]) 
+0

Il n'y a pas de différence entre ceci et le code OP lors de l'attribution d'une nouvelle colonne –

+0

Great! Quand je l'ai fait auparavant, il créait toujours la colonne NETREV. Mais cela a d'abord fonctionné. Je vous remercie. J'apprends toujours cela et toutes les idiosyncrasies .. – PML