J'ai un dataframe R avec une colonne contenant une chaîne de nombres, mais je voudrais les traiter comme un facteur (principalement pour arrêter de raccourcir les chiffres à l'aide de E + 04, etc.). Une façon de résoudre ce problème est de modifier le fichier CSV que les données sont extraites et ajoutent une entrée factice qui a un mot dans la colonne souhaitée, puis de le réimposer. Comment puis-je obtenir cet effet à l'aide de randices R sans gâcher avec le CSV?
Pour clarifier, mon fichier de données ressemble à ceci: p> Je veux changer le type de données de numéromanes de chiffrement à un facteur et de se débarrasser de la PESKY E + 07. P> P>
3 Réponses :
Je conseillerais de stocker des chiffres de points flottants en tant que facteurs ... mais vous pouvez toujours le faire. Mais j'ai également inclus plusieurs autres options.
> txt <- "pNum,Condition,numberEntered
+ 1,2,5.0970304e+07"
> dat <- read.csv(textConnection(txt),colClasses=c("integer","integer","factor"))
> dat
pNum Condition numberEntered
1 1 2 5.0970304e+07
> dat[,3]
[1] 5.0970304e+07
Levels: 5.0970304e+07
> dat <- read.csv(textConnection(txt),colClasses=c("integer","integer","character"))
> dat[,3]
[1] "5.0970304e+07"
> dat <- read.csv(textConnection(txt),colClasses=c("integer","integer","numeric"))
> dat[,3]
[1] 50970304
> print.numeric <- function(...) formatC(...,format="f")
> print(dat[,3])
[1] "50970304.0000"
Désolé de dire, mais vous dépensez du temps à essayer de résoudre un problème qui n'existe pas. Utilisez Vous pouvez utiliser des options str code> pour vérifier les types de données dans votre fichier data.frame et vous verrez que numéryentred code> est num code> et ce n'est pas " raccourci ". Le seul problème est le nombre de chiffres significatifs imprimés em>. (chiffres = 22) code> pour la définir Imprimez le nombre maximum de chiffres significatifs. Voir ? Options CODE> Pour plus d'informations. P> P>
Merci pour la réponse. J'ai joué un peu avec l'option des chiffres mais je soupçonne que je ne comprends pas. Les chiffres varient entre 2 et 8 dans cette colonne, donc je ne suis donc pas sûr de définir la valeur des chiffres. J'en ai besoin pour montrer 2.139 au lieu de 2.1390000E + 00 et 3924.75 au lieu de 3.9247500E + 03 (c'est ce qui est affiché après l'utilisation des options (chiffres = 8)
Cela semble être un problème avec les options (SCIPEN) CODE>.
Comme l'a dit Joshua, il s'agit d'un problème d'impression et non d'un problème de stockage. Vous pouvez modifier la façon dont tous les numéros sont imprimés (= en ajustant le code getOption ("SCIPEN") CODE>. format(x)
format(x, digits = 10)
format(x, digits = 3)
format(x, digits = 3, scientific = 5)
format(x, trim = TRUE, digits = 3, scientific = 5)
formatC(x)
formatC(x, format = "fg")
formatC(x, format = "fg", flag = "+")
Merci! C'était très informatif effectivement et corrigé mon problème. Merci de me fournir les exemples utiles.
Pour ajouter un point de clarification, format code> et formatc code> Ne modifiez pas la façon dont les chiffres sont imprimés; Ils convertissent les chiffres en caractères à l'aide du format spécifié.
Est-il possible de changer un vecteur numérique à la notation scientifique sans la convertir en caractère?