Saya mencoba untuk menentukan colClasses
opsi dalam read.csv
fungsi di R. Dalam data saya, kolom pertama "waktu" pada dasarnya adalah vektor karakter sedangkan kolom lainnya adalah numerik.
data <- read.csv("test.csv", comment.char="" ,
colClasses=c(time="character", "numeric"),
strip.white=FALSE)
Pada perintah di atas, saya ingin R membaca di kolom "waktu" sebagai "karakter" dan sisanya sebagai numerik. Meskipun, variabel "data" memang memiliki hasil yang benar setelah perintah diselesaikan, R mengembalikan peringatan berikut. Saya bertanya-tanya bagaimana cara memperbaiki peringatan ini?
Warning messages:
1: In read.table(file = file, header = header, sep = sep, quote = quote, :
not all columns named in 'colClasses' exist
2: In tmp[i[i > 0L]] <- colClasses :
number of items to replace is not a multiple of replacement length
Derek
read.table
.Anda dapat menentukan colClasse hanya untuk satu kolom.
Jadi dalam contoh Anda, Anda harus menggunakan:
sumber
Dengan asumsi kolom 'waktu' Anda memiliki setidaknya satu pengamatan dengan karakter non-numerik dan semua kolom Anda yang lain hanya memiliki angka, maka default 'read.csv' adalah membaca dalam 'waktu' sebagai 'faktor' dan sisanya kolom sebagai 'numerik'. Oleh karena itu pengaturan 'stringsAsFactors = F' akan memiliki hasil yang sama seperti pengaturan 'colClasses' secara manual yaitu,
sumber
Jika Anda ingin merujuk ke nama dari header daripada nomor kolom, Anda dapat menggunakan sesuatu seperti ini:
sumber
Untuk beberapa kolom datetime tanpa header, dan banyak kolom, katakan bidang datetime saya ada di kolom 36 dan 38, dan saya ingin mereka membacanya sebagai kolom karakter:
sumber
Saya tahu OP bertanya tentang
utils::read.csv
fungsinya, tetapi izinkan saya memberikan jawaban untuk ini yang datang ke sini mencari cara melakukannya menggunakanreadr::read_csv
dari tidyverse.Ini harus menyetel tipe default untuk semua kolom sebagai karakter , sementara waktu akan diuraikan sebagai integer.
sumber
Jika kita menggabungkan apa yang disumbangkan @Hendy dan @Oddysseus Ithaca, kita mendapatkan potongan kode yang lebih bersih dan lebih umum (yaitu, mudah beradaptasi?).
sumber