web-dev-qa-db-fra.com

Comment ajouter un en-tête à un jeu de données dans R?

Je dois lire le '' wdbc.data 'dans le dossier de données suivant: http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/

Faire cela en R est facile en utilisant la commande read.csv mais comme l'en-tête est manquant, comment puis-je l'ajouter? J'ai les informations mais je ne sais pas comment faire cela et je préférerais ne pas éditer le fichier de données.

18
blueSurfer

Vous pouvez faire ce qui suit:

Charger les données:

test <- read.csv(
          "http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data",
          header=FALSE)

Notez que la valeur par défaut de l'argument header pour read.csv est TRUE. Pour obtenir toutes les lignes, vous devez donc le définir sur FALSE.

Ajouter des noms aux différentes colonnes du data.frame

names(test) <- c("A","B","C","D","E","F","G","H","I","J","K")

ou alternative et plus rapide si je comprends bien (ne pas recharger l'ensemble de données):

colnames(test) <- c("A","B","C","D","E","F","G","H","I","J","K")
30
Jochem

Vous pouvez également utiliser colnames au lieu de noms si vous avez data.frame ou matrix

3
user1436187

si vous souhaitez lire des données d'un fichier .txt et extraire seulement quelques colonnes de ce fichier dans un nouveau fichier .txt avec un en-tête personnalisé, le code suivant peut être utile:

# input some data from 2 different .txt files:
civit_gps <- read.csv(file="/path2/gpsFile.csv",head=TRUE,sep=",")
civit_cam <- read.csv(file="/path2/cameraFile.txt",head=TRUE,sep=",")

# assign the name for the output file:
seqName <- "seq1_data.txt"

#=========================================================
# Extract data from imported files
#=========================================================
# From Camera:
frame_idx <- civit_cam$X.frame
qx        <- civit_cam$q.x.rad.
qy        <- civit_cam$q.y.rad.
qz        <- civit_cam$q.z.rad.
qw        <- civit_cam$q.w

# From GPS:
gpsT      <- civit_gps$X.gpsTime.sec.
latitude  <- civit_gps$Latitude.deg.
longitude <- civit_gps$Longitude.deg.
altitude  <- civit_gps$H.Ell.m.
heading   <- civit_gps$Heading.deg.
pitch     <- civit_gps$pitch.deg.
roll      <- civit_gps$roll.deg.
gpsTime_corr <- civit_gps[frame_idx,1]

#=========================================================
# Export new data into the output txt file
#=========================================================
myData <- data.frame(c(gpsTime_corr),
                     c(frame_idx),
                     c(qx),
                     c(qy),
                     c(qz),
                     c(qw))
# Write :
cat("#GPSTime,frameIdx,qx,qy,qz,qw\n", file=seqName)
write.table(myData, file = seqName,row.names=FALSE,col.names=FALSE,append=TRUE,sep = ",")

Bien sûr, vous devriez modifier cet exemple de script en fonction de votre propre application.

0
Färid Alijani