2017-08-13 5 views
0

J'ai googlé et stackoverflowed ce haut et bas mais je ne trouve rien qui me permettra de résoudre le problème. Donc, excuses à l'avance si cette question semble un peu basique à certains.R: calculer la statistique de groupe sur data.frame qui a été créé à partir de csv import - facteurs numéro

J'ai importé les données suivantes d'un csv (je suis juste, y compris la tête):

head of data.frame

Tout ce que je suis simplement en train de faire est de procéder à une statistique de groupe (médiane) sur la colonne de currency_pchg du data.frame, avec la colonne price_date servant de groupe en utilisant la formule tapply. Cependant, je reçois une plainte selon la capture d'écran suivante.

error message from tapply

J'ai essayé toutes sortes de corrections - laisser tomber les facteurs de la data.frame (qui ne fonctionne pas), l'application stringAsFactors = FALSE lors de l'importation csv (encore une fois, cela ne fonctionne pas - parce qu'il sont quelques entrées NA dans le fichier d'importation, d'après ce que je comprends), et ont essayé d'utiliser la fonction aggregate ainsi (une alternative à tapply).

Cependant, rien ne fonctionne et j'ai atteint une impasse ici. Donc, toute orientation serait très appréciée.

Merci,

+0

Pourquoi ne pas essayer '' aggregate' ou 'dplyr' group_by' – Wen

+0

Je ne pense pas' stringAsFactors = FALSE' échouerait à cause de 'NA '. S'il vous plaît partagez votre code et vos données. Utilisez 'dput (test)' et publiez la sortie ici. – www

+0

Collez la sortie en tant que texte et non en tant qu'image. –

Répondre

0

colonne currency_pchg est le plus susceptible d'être lu comme un facteur. Essayez de convertir currency_pchg à numérique de cette manière, puis effectuer l'agrégation:

#na.rm = TRUE to ignore NAs 
data %>% group_by(price_date) %>% summarise(median(as.numeric(as.character(currency_pchg)), na.rm = TRUE)) 
+0

Merci, sparkh2o ... Cela fonctionne un régal. J'avais effectivement essayé as.numeric (as.character (currency_pchg))) selon les suggestions d'ailleurs et cela n'avait pas fonctionné. Mais l'argument na.rm = TRUE a fait l'affaire. Merci encore – GoingMush