Próbuję określić colClasses
opcje w read.csv
funkcji w R. W moich danych pierwsza kolumna „czas” jest w zasadzie wektorem znakowym, podczas gdy pozostałe kolumny są liczbami.
data <- read.csv("test.csv", comment.char="" ,
colClasses=c(time="character", "numeric"),
strip.white=FALSE)
W powyższym poleceniu chciałbym, aby R czytał w kolumnie „czas” jako „znak”, a resztę jako liczbę. Chociaż zmienna „data” miała poprawny wynik po zakończeniu polecenia, R zwrócił następujące ostrzeżenia. Zastanawiam się, jak mógłbym naprawić te ostrzeżenia?
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
.Możesz określić colClasse tylko dla jednej kolumny.
W swoim przykładzie powinieneś użyć:
źródło
Zakładając, że kolumna „czas” zawiera co najmniej jedną obserwację ze znakiem nienumerycznym, a wszystkie pozostałe kolumny zawierają tylko liczby, wówczas domyślną wartością parametru „read.csv” będzie odczytanie „czasu” jako „czynnika” i całej reszty kolumny jako „numeryczne”. Dlatego ustawienie „stringsAsFactors = F” będzie miało taki sam skutek, jak ręczne ustawienie „colClasses”, tj.
źródło
Jeśli chcesz odwoływać się do nazw z nagłówka zamiast numerów kolumn, możesz użyć czegoś takiego:
źródło
W przypadku wielu kolumn z datą i godziną bez nagłówka i wielu kolumn powiedzmy, że moje pola daty i godziny znajdują się w kolumnach 36 i 38 i chcę, aby były odczytywane jako pola znakowe:
źródło
Wiem, że OP zapytał o
utils::read.csv
funkcję, ale pozwól mi odpowiedzieć na te, które przychodzą tutaj, szukając, jak to zrobić, używającreadr::read_csv
z tidyverse.Powinno to ustawić domyślny typ dla wszystkich kolumn jako znak , podczas gdy czas będzie analizowany jako liczba całkowita.
źródło
Jeśli połączymy to, co wnieśli @Hendy i @Oddysseus Ithaca, otrzymamy czystszy i bardziej ogólny (tj. Dający się dostosować?) Fragment kodu.
źródło