duplicate " row.nazwy " nie są dozwolone błąd
Próbuję załadować plik csv, który ma 14 kolumn jak to:
StartDate, var1, var2, var3, ..., var14
Kiedy wydaję tę komendę:
systems <- read.table("http://getfile.pl?test.csv", header = TRUE, sep = ",")
Pojawia się komunikat o błędzie.
Duplicate row.nazwy nie są dozwolone
Wydaje mi się, że pierwsza nazwa kolumny powoduje problem. Kiedy ręcznie pobieram plik i usuwam nazwę StartDate
z pliku, r pomyślnie odczytuje plik i Zastępuje pierwszą nazwę kolumny X
. Czy ktoś może mi powiedzieć co się dzieje na? Plik jest plikiem csv (oddzielonym przecinkami).
8 answers
To powiedz read.tabela Nie do użycia row.names
:
systems <- read.table("http://getfile.pl?test.csv",
header=TRUE, sep=",", row.names=NULL)
A teraz twoje wiersze będą po prostu ponumerowane.
Spójrz również na read.csv
, który jest opakowaniem dla read.table
, który ustawia już argumenty sep=','
i header=TRUE
, tak aby Twoje wywołanie uprościło się do
systems <- read.csv("http://getfile.pl?test.csv", row.names=NULL)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-13 19:59:38
To powiązane pytanie wskazuje część ?read.table
dokumentacji, która wyjaśnia twój problem:
Jeśli jest nagłówek, a pierwszy wiersz zawiera o jedno pole mniej niż liczba kolumn, używana jest pierwsza kolumna w wejściu dla nazw rzędów. W przeciwnym razie, jeśli wiersz.brakuje nazw, wiersze są ponumerowane.
Twój wiersz nagłówka prawdopodobnie ma o 1 mniej kolumn niż reszta pliku, więc read.table
zakłada, że pierwsza kolumna jest wierszem.nazwy (które muszą być unikalne), a nie kolumna (która może zawierać zduplikowane wartości). Można to naprawić za pomocą jednego z następujących dwóch rozwiązań:
- dodawanie ogranicznika (ie
\t
lub,
) do przodu lub końca wiersza nagłówka w pliku źródłowym, or, - usuwanie ograniczników końcowych w Twoich danych
Wybór zależy od struktury danych.
Przykład:
Tutaj wiersz nagłówka jest interpretowany jako mający o jeden mniej kolumny niż dane, ponieważ ograniczniki nie pasują:
v1,v2,v3 # 3 items!!
a1,a2,a3, # 4 items
b1,b2,b3, # 4 items
Tak to jest interpretowane domyślnie:
v1,v2,v3 # 3 items!!
a1,a2,a3, # 4 items
b1,b2,b3, # 4 items
Pierwsza kolumna (bez nagłówka) wartości są interpretowane jako wiersz.nazwy: a1
i b1
. Jeśli ta kolumna zawiera duplikaty, co jest całkowicie możliwe, wtedy pojawia się błąd duplicate 'row.names' are not allowed
.
Jeśli ustawisz row.names = FALSE
, przesunięcie nie nastąpi, ale nadal masz niedopasowaną liczbę elementów w nagłówku i danych, ponieważ ograniczniki nie pasują.
Rozwiązanie 1 Dodawanie ogranicznika końcowego do nagłówka:
v1,v2,v3, # 4 items!!
a1,a2,a3, # 4 items
b1,b2,b3, # 4 items
Rozwiązanie 2 Usuń nadmiarowy ogranicznik końcowy z wierszy innych niż nagłówek:
v1,v2,v3 # 3 items
a1,a2,a3 # 3 items!!
b1,b2,b3 # 3 items!!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-13 16:30:18
Miałem ten błąd podczas otwierania pliku CSV i w jednym z pól osadzono przecinki. Pole miało cytaty wokół niego, a ja wyciąłem i wklejałem odczyt.tabela z quote = "" w niej. Raz wziąłem quote= "" out, domyślne zachowanie czytać.table przejął kontrolę i zabił problem. Więc wyszedłem z tego:
systems <- read.table("http://getfile.pl?test.csv", header=TRUE, sep=",", quote="")
Do tego:
systems <- read.table("http://getfile.pl?test.csv", header=TRUE, sep=",")
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-20 16:08:00
W moim przypadku był przecinek na końcu każdej linii. Usuwając to działa
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-05 07:37:23
Innym możliwym powodem tego błędu jest duplikowanie całych wierszy. W takim przypadku problem zostanie rozwiązany poprzez usunięcie zduplikowanych wierszy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 22:44:46
Użyłem read_csv
z readr
pakiet
Z mojego doświadczenia wynika, że parametr row.names=NULL
w funkcji read.csv
doprowadzi do błędnego odczytu
plik jeśli brakuje nazwy kolumny, tzn. każda kolumna zostanie przesunięta.
read_csv
rozwiązuje to.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-21 13:27:52
Odpowiedź tutaj ( https://stackoverflow.com/a/22408965/2236315 ) by @ adrianoesch powinien pomóc (np. rozwiązuje " jeśli znasz rozwiązanie, które nie wymaga niewygodnego obejścia wymienionego w komentarzu (przesuń nazwy kolumn, skopiuj dane), byłoby świetnie."i "...wymóg kopiowania danych " zaproponowany przez @ Frank).
Zauważ, że jeśli otworzysz w jakimś edytorze tekstu, powinieneś zobaczyć, że liczba pól nagłówka jest mniejsza niż liczba kolumn pod nagłówkiem wiosłować. W moim przypadku zestaw danych miał "," brakuje na końcu ostatniego pola nagłówka.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-20 06:19:05
Wydaje się, że problem może wynikać z więcej niż jednego powodu. Następujące dwa kroki zadziałały, gdy miałem ten sam błąd.
- zapisałem swój plik jako MS-DOS csv. (Wcześniej został zapisany jako csv, excel starter 2010 ). Otworzył plik csv w notepad++. No coma był niespójny (spójność jak opisano powyżej @Brian).
- zauważyłem, że nie używam argumentu sep="," . Użyłem i zadziałało (mimo że jest to domyślny argument!)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-17 06:20:18