我的test.csv
文件是:
a;b;c
x;;
y;1.2;3
z;2.4;5
我尝试使用以下脚本将此文件导入数据框test
:
library(readr)
test <- read_delim("data/test.csv",
";", escape_double = FALSE,
na = c("empty",""),
col_types = cols(.default = col_character()),
trim_ws = TRUE)
但是变量b
和c
应该是numeric
,但是应该是character
。我试图更改col_types
,但没有结果。
编辑:这是一个更现实的示例:
Country/Territory;WBCode;Estimate;StdErr
Aruba;ABW;;
Andorra;ADO;1,32;0,48
Afghanistan;AFG;-1,29;0,34
答案 0 :(得分:2)
改为使用read.csv
或read.table
text <- "a;b;c
x;;
y;1.2;3
z;2.4;5"
df <- read.csv(text = text, sep =";", stringsAsFactors = FALSE)
str(df)
#'data.frame': 3 obs. of 3 variables:
# $ a: chr "x" "y" "z"
# $ b: num NA 1.2 2.4
# $ c: int NA 3 5
根据更新后的示例,您可以在dec
中用read.csv
指定小数点
text = "Country/Territory;WBCode;Estimate;StdErr
Aruba;ABW;;
Andorra;ADO;1,32;0,48
Afghanistan;AFG;-1,29;0,34"
read.csv(text = text, sep = ";", dec = ",", stringsAsFactors = FALSE)
# Country.Territory WBCode Estimate StdErr
#1 Aruba ABW NA NA
#2 Andorra ADO 1.32 0.48
#3 Afghanistan AFG -1.29 0.34
答案 1 :(得分:2)
根据您更新的示例,看起来造成问题的原因是CSV使用,
作为十进制标记。您可以通过以下方式阅读它:
readr::read_delim("test.csv", ";",
locale = locale(decimal_mark = ","))
这将产生:
# A tibble: 3 x 4
`Country/Territory` WBCode Estimate StdErr
<chr> <chr> <dbl> <dbl>
1 Aruba ABW NA NA
2 Andorra ADO 1.32 0.48
3 Afghanistan AFG -1.29 0.34