R出错问题(持续更新)

2020-07-08  本文已影响0人  冬之心

数据管理

.csv导入R,首变量出现乱码。

> enr <- read.csv("c:/users/wintryheart/desktop/enroll.csv")
> head(enr)
  锘縴ear lowest plevel class subject
1    2019    368    339    AB    arts
2    2019    355    339    BB    arts
3    2018    366    337    AB    arts
4    2018    351    337    BB    arts
5    2017    359    333    AB    arts
6    2017    339    333    BB    arts
> enr <- read.csv("c:/users/wintryheart/desktop/enroll.csv",encoding="UTF-8")
> head(enr)
  X.U.FEFF.year lowest plevel class subject
1          2019    368    339    AB    arts
2          2019    355    339    BB    arts
3          2018    366    337    AB    arts
4          2018    351    337    BB    arts
5          2017    359    333    AB    arts
6          2017    339    333    BB    arts

出错原因
Excel在保存为.csv文件时,选择了“保存类型”为“CSV UTF-8 (逗号分隔) (*.csv)”。

解决办法
选择“保存类型”为“CSV (逗号分隔) (*.csv)”。

读取含中文的EXCEL文件,分列错误和中文乱码

结论

读取含中文的EXCEL文件,最好使用readxl包中的read_excel()函数。

第一种EXCEL保存方式

Excel在保存为.csv文件时,选择了“保存类型”为“CSV UTF-8 (逗号分隔) (*.csv)”。

library(foreign)

data1 <- read.csv("C:\\Users\\wintryheart\\Desktop\\foreign2.csv", encoding = "utf-8")
data1
##   锘縮ubject            name chx cxh cx lyl lss
## 1   澶栬100 璇歌憶浜\xae,80  90  85 85  80  NA
## 2   澶栬100 闄堝渾鍦\x86,80  85  90 75  75  NA
## 3   澶栬100  鍚撮棣\x99,85  90  85 75  75  NA
## 4   澶栬100 鏉庝笘姘\x91,85  95  75 75  70  NA
## 5   澶栬100           寮犻  80  90 70  70  70
## 6   澶栬100          鏉庣師  80  90 65  75  70
## 7   澶栬100          鎴愰緳  80  85 60  75  70
## 8   澶栬100 鐜嬩粰鑺\x9d,85  95  80 70  90  NA
data1 <- read.csv("C:\\Users\\wintryheart\\Desktop\\foreign2.csv", encoding = "UTF-8")
data1
##   X.U.FEFF.subject      name chx cxh cx lyl lss
## 1          外语100 诸葛亮,80  90  85 85  80  NA
## 2          外语100 陈圆圆,80  85  90 75  75  NA
## 3          外语100 吴香香,85  90  85 75  75  NA
## 4          外语100 李世民,85  95  75 75  70  NA
## 5          外语100      张飞  80  90 70  70  70
## 6          外语100      李玟  80  90 65  75  70
## 7          外语100      成龙  80  85 60  75  70
## 8          外语100 王仙芝,85  95  80 70  90  NA
  1. 乱码错误:原定义encoding="utf-8",更正为encoding="UTF-8",乱码问题解决。

  2. 分列错误:第二列字符不相等。若均为两个中文字,则能正确分列;三个以上中文字,仍不能正确分列。 没找到解决方法。

第二种EXCEL保存方式

Excel在保存为.csv文件时,选择“保存类型”为“CSV (逗号分隔) (*.csv)”。

library(foreign)

data1 <- read.csv("C:\\Users\\wintryheart\\Desktop\\foreign1.csv", encoding = "UTF-8")
data1
##               subject                         name chx cxh cx lyl lss
## 1 <cd><e2><d3><ef>100 <d6><ee><U+00B8><f0><c1><c1>  80  90 85  85  80
## 2 <cd><e2><d3><ef>100 <U+00B3><c2><U+0532><U+0532>  80  85 90  75  75
## 3 <cd><e2><d3><ef>100     <ce><e2><cf><e3><cf><e3>  85  90 85  75  75
## 4 <cd><e2><d3><ef>100     <c0><ee><ca><c0><c3><f1>  85  95 75  75  70
## 5 <cd><e2><d3><ef>100             <d5><U+0177><c9>  80  90 70  70  70
## 6 <cd><e2><d3><ef>100             <c0><ee><e7><e4>  80  90 65  75  70
## 7 <cd><e2><d3><ef>100         <U+00B3><c9><c1><fa>  80  85 60  75  70
## 8 <cd><e2><d3><ef>100     <cd><f5><cf><c9><U+05A5>  85  95 80  70  90
data1 <- read.csv("C:\\Users\\wintryheart\\Desktop\\foreign1.csv", encoding = "utf-8")
data1
##   subject   name chx cxh cx lyl lss
## 1 外语100 诸葛亮  80  90 85  85  80
## 2 外语100 陈圆圆  80  85 90  75  75
## 3 外语100 吴香香  85  90 85  75  75
## 4 外语100 李世民  85  95 75  75  70
## 5 外语100   张飞  80  90 70  70  70
## 6 外语100   李玟  80  90 65  75  70
## 7 外语100   成龙  80  85 60  75  70
## 8 外语100 王仙芝  85  95 80  70  90
  1. 当保存方式“CSV (逗号分隔) (*.csv)”时,定义encoding = "UTF-8",无法修正乱码。

  2. 原定义encoding="UTF-8",更正为encoding="utf-8",乱码问题解决。无分列错误问题。

第三种保存方式

测试文件使用EXCEL2016默认保存格式.xlsx

library(readxl)

data1 <- read_excel("C:\\Users\\wintryheart\\Desktop\\foreign3.xlsx", sheet="foreign")
data1
## # A tibble: 8 x 7
##   subject name     chx   cxh    cx   lyl   lss
##   <chr>   <chr>  <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 外语100 诸葛亮    80    90    85    85    80
## 2 外语100 陈圆圆    80    85    90    75    75
## 3 外语100 吴香香    85    90    85    75    75
## 4 外语100 李世民    85    95    75    75    70
## 5 外语100 张飞      80    90    70    70    70
## 6 外语100 李玟      80    90    65    75    70
## 7 外语100 成龙      80    85    60    75    70
## 8 外语100 王仙芝    85    95    80    70    90
上一篇下一篇

猜你喜欢

热点阅读