R 不喜欢真正是数据的列名。此外,列名始终转换为character,因此它们不会是真正的Date 对象。无论哪种方式,如果您阅读?read.csv,您将看到check.names= 参数。
check.names:合乎逻辑。如果 'TRUE' 则在
检查数据框以确保它们在语法上
有效的变量名。如有必要,它们会被调整(通过
'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
尽管意识到您需要在某些子集上更进一步。
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-proper 的“行名”:
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)不使用或保留行名。一个常见的建议是将行名转换为适当的列,如第一个示例所示。