R read.csv 导入列名不正确
R read.csv Importing Column Names Incorrectly
我有一个 csv,我想将其作为 data.frame 导入到 R 中。此 csv 有 headers,例如 USD.ZeroCouponBondPrice(1m)
和 USD-EQ-SP500
,我无法更改。但是,当我尝试将其导入 R 时,R 的 read.csv
函数会将字符 ()-
覆盖为 .
尽管我无法在函数 documentation,这行代码有效:
colnames(df)<-c('USD.ZeroCouponBondPrice(1m)', 'USD-EQ-SP500')
所以这些字符在 data.frame
列名中是合法的。覆盖所有的列名很烦人而且很脆弱,因为它们有 20 多个,而且更改它们并非不可想象。有没有办法防止 read.csv
替换这些字符,或者使用替代函数?
如果设置参数
check.names = FALSE
in read.csv,那么 R 将不会覆盖名称。但这些名称在 R 中无效,它们的处理方式必须与有效名称不同。
说明可能的 Tibbles
解决方案,利用 如何使用 check.names = FALSE
# install.packages(c("tidyverse"), dependencies = TRUE)
library(tibble)
dta <- url("http://s3.amazonaws.com/csvpastebin/uploads/a4c665743904ea8f18dd1f31edcbae04/crazy_names.csv")
TBdta <- as_tibble(read.csv(dta, check.names = FALSE))
TBdta
#> # A tibble: 6 x 3
#> USD.ZeroCouponBondPrice(1m) USD-EQ-SP500 crazy name
#> <fctr> <dbl> <int>
#> 1 A 10.0 12
#> 2 A 11.0 14
#> 3 B 5.0 8
#> 4 B 6.0 10
#> 5 A 10.5 13
#> 6 B 7.0 11
请务必阅读 this introduction to Tibbles
,因为它们的行为确实与常规数据帧有些不同。
万一有人需要用https
temporaryFile <- tempfile()
download.file("https://s3.amazonaws.com/csvpastebin/uploads/a4c665743904ea8f18dd1f31edcbae04/crazy_names.csv", destfile = temporaryFile, method="curl")
TBdta2 <- as_tibble(read.csv(temporaryFile, check.names = F))
我有一个 csv,我想将其作为 data.frame 导入到 R 中。此 csv 有 headers,例如 USD.ZeroCouponBondPrice(1m)
和 USD-EQ-SP500
,我无法更改。但是,当我尝试将其导入 R 时,R 的 read.csv
函数会将字符 ()-
覆盖为 .
尽管我无法在函数 documentation,这行代码有效:
colnames(df)<-c('USD.ZeroCouponBondPrice(1m)', 'USD-EQ-SP500')
所以这些字符在 data.frame
列名中是合法的。覆盖所有的列名很烦人而且很脆弱,因为它们有 20 多个,而且更改它们并非不可想象。有没有办法防止 read.csv
替换这些字符,或者使用替代函数?
如果设置参数
check.names = FALSE
in read.csv,那么 R 将不会覆盖名称。但这些名称在 R 中无效,它们的处理方式必须与有效名称不同。
说明可能的 Tibbles
解决方案,利用 check.names = FALSE
# install.packages(c("tidyverse"), dependencies = TRUE)
library(tibble)
dta <- url("http://s3.amazonaws.com/csvpastebin/uploads/a4c665743904ea8f18dd1f31edcbae04/crazy_names.csv")
TBdta <- as_tibble(read.csv(dta, check.names = FALSE))
TBdta
#> # A tibble: 6 x 3
#> USD.ZeroCouponBondPrice(1m) USD-EQ-SP500 crazy name
#> <fctr> <dbl> <int>
#> 1 A 10.0 12
#> 2 A 11.0 14
#> 3 B 5.0 8
#> 4 B 6.0 10
#> 5 A 10.5 13
#> 6 B 7.0 11
请务必阅读 this introduction to Tibbles
,因为它们的行为确实与常规数据帧有些不同。
万一有人需要用https
temporaryFile <- tempfile()
download.file("https://s3.amazonaws.com/csvpastebin/uploads/a4c665743904ea8f18dd1f31edcbae04/crazy_names.csv", destfile = temporaryFile, method="curl")
TBdta2 <- as_tibble(read.csv(temporaryFile, check.names = F))