How to read csv data with unknown encoding in R

I have .csv data and I could view it from a web page, but when I read it in R , some of the data could not be displayed. Data is available here home.ustc.edu.cn/~lanrr/data.csv

 mydata = read.csv("http://home.ustc.edu.cn/~lanrr/data.csv", header = T) View(mydata) # show something like this: # 9:39:37 665 600160  ޻  ɷ            8.050 100 805.00   ȯ  ɽ    ȯ     E004017669 665 2 9:39:38 697 930                    4.360 283 1233.88       ɽ      Ʒ     680001369 697 

The data contains some Chinese words, but I do not want, if I need to change the encoding or do something else, will anyone encounter this problem earlier?

 mydata = read.csv("http://home.ustc.edu.cn/~lanrr/data.csv", encoding = "UTF-8", header = T, stringsAsFactors = F) View(mydata) # 9:39:37 665 600160 <U+00BE><U+07BB><U+00AF><U+00B9><U+0277><dd> <c2><f4> <U+00B3><f6> <c2><f2><c2><f4> 8.050 100 805.00 <c8><da><U+022F> <U+00B3><U+027D><U+00BB> <c8><da><U+022F><c2><f4><U+00B3><f6> E004017669 665 2 9:39:38 697 930 <d6><d0><U+0078><c9><fa><U+00BB><U+00AF> <c2><f4> <U+00B3><f6> <c2><f2><c2><f4> 4.360 283 1233.88 <d0><c5><d3><c3> <U+00B3><U+027D><U+00BB> <U+00B5><U+00A3><U+00B1><U+00A3><U+01B7><c2><f4><U+00B3> <f6> 680001369 697 sessionInfo() # R version 2.15.2 (2012-10-26) Platform: x86_64-redhat-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=C LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] compiler stats graphics grDevices utils datasets methods base other attached packages: [1] data.table_1.8.8 TTR_0.22-0 xts_0.9-3 zoo_1.7-9 timeDate_2160.97 Matrix_1.0-9 lattice_0.20-10 loaded via a namespace (and not attached): [1] grid_2.15.2 tools_2.15.2 

I do it as follows:

 Sys.setlocale("LC_COLLATE", "Chinese") Sys.setlocale("LC_CTYPE", "Chinese") Sys.setlocale("LC_MONETARY", "Chinese") Sys.setlocale("LC_TIME", "Chinese") Sys.setlocale("LC_MESSAGES", "Chinese") Sys.setlocale("LC_MEASUREMENT", "Chinese") 
+6
source share
2 answers

You can use read.csv with UTF-8 encoding:

 df <-read.csv("data.csv", encoding="UTF-8", stringsAsFactors=FALSE) 

to make Chinese letters Symbols, not factors.

Note. I do not have a Chinese language package installed in my environment, so I can not determine if the distorted characters in the provided .csv are damaged or not recognized.

+5
source

Firstly, this GBK encoded csv file is not UTF-8, so the code should be:

 mydata <- read.csv("http://home.ustc.edu.cn/~lanrr/data.csv", encoding = "GBK", header = TRUE, stringsAsFactors = FALSE) 

Secondly, if your env is not Chinese (simplified), you should set set_locale, for example (my os example is windows 7)

Sys.setlocale (category = "LC_ALL", locale = "Chinese (Simplified)") and then show the table with

 fix(mydata) 
+5
source

Source: https://habr.com/ru/post/945531/


All Articles