R не любит имена столбцов, которые на самом деле являются данными. Кроме того, имена столбцов всегда преобразуются в character
, поэтому они не будут настоящими объектами Date
. В любом случае, если вы прочитаете ?read.csv
, вы увидите аргумент check.names=
.
check.names: logical. Если «ИСТИНА», то имена переменных во фрейме данных проверяются, чтобы убедиться, что они являются синтаксически допустимыми именами переменных. При необходимости они корректируются (с помощью make.names) так, чтобы они были такими, а также для того, чтобы не было дубликатов.
read.csv(text = "2020-02-02,2020-02-03\n1,2")
# X2020.02.02 X2020.02.03
# 1 1 2
read.csv(text = "2020-02-02,2020-02-03\n1,2", check.names = FALSE)
# 2020-02-02 2020-02-03
# 1 1 2
DF = read.csv("https://raw.githubusercontent.com/PawinData/UC/SFBA/Targets.csv", check.names = FALSE)
DF[1:3,1:5]
# 2020-02-01 2020-02-02 2020-02-03 2020-02-04
# 1 Alameda 0 0 0 0
# 2 Contra Costa 0 0 0 0
# 3 Marin 0 0 0 0
Хотя имейте в виду, что вам нужно go шаг вперед в некоторых из ваших подмножеств.
DF$2020-04-21
# Error: unexpected numeric constant in "DF$2020"
# x
DF$"2020-04-21"
# [1] 28.719660 36.410103 3.961824 36.634331 17.015503 19.567608 12.449088
# [8] 2.419292 20.666366
DF$`2020-04-21`
# [1] 28.719660 36.410103 3.961824 36.634331 17.015503 19.567608 12.449088
# [8] 2.419292 20.666366
Имена:
colnames(DF) # or just names(DF)
# [1] "" "2020-02-01" "2020-02-02" "2020-02-03" "2020-02-04"
# [6] "2020-02-05" "2020-02-06" "2020-02-07" "2020-02-08" "2020-02-09"
# [11] "2020-02-10" "2020-02-11" "2020-02-12" "2020-02-13" "2020-02-14"
# ...truncated...
Между прочим, ваш первый столбец имеет пустое имя, как видно выше и здесь:
head(DF[[1]])
# [1] "Alameda" "Contra Costa" "Marin" "Napa"
# [5] "San Francisco" "San Mateo"
Вы можете справиться с этим двумя способами:
### original read method:
DF = read.csv("https://raw.githubusercontent.com/PawinData/UC/SFBA/Targets.csv", check.names = FALSE)
names(DF)[1]
# [1] ""
names(DF)[1] <- "counties"
DF[1:3, 1:5]
# counties 2020-02-01 2020-02-02 2020-02-03 2020-02-04
# 1 Alameda 0 0 0 0
# 2 Contra Costa 0 0 0 0
# 3 Marin 0 0 0 0
или сделав им R-правильные «имена строк»:
DF = read.csv("https://raw.githubusercontent.com/PawinData/UC/SFBA/Targets.csv",
check.names = FALSE, row.names = 1)
DF[1:3, 1:5]
# 2020-02-01 2020-02-02 2020-02-03 2020-02-04 2020-02-05
# Alameda 0 0 0 0 0
# Contra Costa 0 0 0 0 0
# Marin 0 0 0 0 0
По общему признанию, многие пакеты (а именно tidyverse) не используют и не сохраняют имена строк. Обычная рекомендация - преобразовать имена строк в правильный столбец, как показано в первом примере.