web-dev-qa-db-fra.com

Lecture des données délimitées par des tabulations dans R

J'essaie de lire un grand fichier délimité par des tabulations dans R.

J'ai d'abord essayé ceci:

data <- read.table("data.csv", sep="\t")

Mais il lit certaines des variables numériques en tant que facteurs

J'ai donc essayé de lire les données en fonction du type que je veux que chaque variable soit comme ceci:

data <- read.table("data.csv", sep="\t", colClasses=c("character","numeric","numeric","character","boolean","numeric"))

Mais quand j'essaye cela me donne une erreur:

Erreur de scan (fichier, quoi, nmax, sep, dec, quote, skip, nlines, na.strings,: scan () attendait 'un vrai', obtenu '"4"'

Je pense qu'il pourrait y avoir des guillemets autour de certaines des valeurs numériques dans le fichier brut d'origine, mais je ne suis pas sûr.

16
Ford

Sans voir vos données, vous avez l'une des choses suivantes: vous n'avez pas tous les onglets séparant les données; il y a des onglets intégrés dans les observations uniques; ou un litnay d'autres.

La façon dont vous pouvez trier cela est de définir options(stringsAsFactors=FALSE) puis d'utiliser votre première ligne.

Consultez str(data) et essayez de déterminer quelles lignes sont les coupables. La raison pour laquelle certaines des valeurs numériques sont lues en tant que facteurs est qu'il y a quelque chose dans cette colonne que R interprète comme un caractère et donc il contraint la colonne entière au caractère. Il faut généralement creuser, mais le problème est presque sûrement avec votre fichier d'entrée.

Il s'agit d'un problème commun de transfert de données, bonne chance!

8
Justin
x <- paste("'",floor(runif(10,0,10)),"'",sep="")
x

 [1] "'7'" "'3'" "'0'" "'3'" "'9'" "'1'" "'4'" "'8'" "'5'" "'8'"

as.numeric(gsub("'", "",x))

 [1] 7 3 0 3 9 1 4 8 5 8
1
Michael