使用read_csv2()
我尝试导入数据(csv
格式和;
分隔)并自动检测.
十进制数。
到目前为止我没有成功,并继续获得以下输出(可以看到最后一列是<chr>
而不是<num>
):
# A tibble: 46 x 4
id segment_id value_type value
<int> <int> <chr> <chr>
1 1 1 min 0
2 1 1 max 0.2
3 1 2 min 0
4 1 2 max 0.2
...
我尝试过:
1
read_csv2("table.csv", col_types = cols())
2。我读了readr
并了解了locale()
关于以下内容的信息
区域设置控制默认值因地而异。默认语言环境是以美国为中心的(如R),但您可以使用locale()
创建自己的语言环境,以控制默认时区,编码,小数点,大标记和日/月名称等内容。 / em>的
但是,使用下面的代码,我没有解决我的问题:
read_csv2("table.csv", col_types = cols(), col_names = TRUE, locale(decimal_mark = "."))
3。阅读How to make R's read_csv2() recognise the text characters properly后,我尝试了所有在 File \ Save with Encoding ... 中列出的所有encondings无法使用:
read_csv2("table.csv", col_types = cols(), col_names = TRUE, locale(encoding = "ISO-8859-1"))
列出的编码为:ISO-8859-1,ASCII,BIG5,GB18030,GB2312,ISO-2022-JP,ISO-2022-KR,ISO-8859-2,ISO-8859-7,SHIFT-JIS, UTF-8,WINDOWS-1252
答案 0 :(得分:0)
当我以您的4行作为csv运行read_csv2并运行以下行时:
prueba <- read_csv2(file = input_prueba, col_types = cols(), col_names = TRUE, locale(encoding = "ISO-8859-1"))
我得到相同的输出,最后一列作为字符列导入,但有一条消息建议使用read_delim():
Using ',' as decimal and '.' as grouping mark. Use read_delim() for more control
如果您仍然想使用read_csv2,这是我的方法:
#For a quicker management of tables use data.table
install.packages("data.table")
library("data.table")
prueba <- as.data.table(prueba)
#Change column to number
prueba[,value:=as.double(value)]
str(prueba)
Classes ‘data.table’ and 'data.frame': 4 obs. of 4 variables:
$ id : int 1 1 1 1
$ segment_id: int 1 1 2 2
$ value_type: chr "min" "max" "min" "max"
$ value : num 0 0.2 0 0.2