初学者使用R语言读取excel/csv/txt的注意事项
本文首发于:医学和生信笔记,完美观看体验请至公众号查看本文。
文章目录
- 把数据读入R语言
- Excel
- csv
- txt
- 其他
- 写出文件(从R语言另存为其他格式)
本文面向R语言初学者,尤其是生物医药领域的初学者,大佬勿喷~
在之前的推文中,我们用两个视频详细介绍了R语言、rtools、Rstudio以及R包的安装,解决新手最先碰到的两大难题!
接下来大家就面临把数据读入R语言、把数据另存为其他格式的问题!
大家在日常生活中遇到的最多的数据应该还是Excel数据,但是对于R语言来说,我们必须要把外部数据读入到R里面,才能进行各种操作。对于我们最后的数据,可能还需要再保存为excel格式。
这两个问题对于会的人来说非常简单,可以有多种方法可以实现,但是对于新手来说却经常遇到报错。今天从一个新手的角度说一说R语言的数据读入和另存问题。
把数据读入R语言
Excel
这个格式太常见了,大家日常生活用的大部分都是这种格式。比如有这么一个excel文件:data.xlsx
,它里面的内容是这样的:
现在我们需要把它读入R里面。我推荐你使用readxl
包读取Excel文件。首先我们要安装这个R包,如果你还不会R包安装常见的4种方式,赶紧去看这个视频:xxxxxxxxxxxxx。
install.packages("readxl")
安装好之后,我们需要加载这个R包才能使用:
library(readxl)
然后我们就可以读入这个文件了,读取时,你必须指明你的文件在哪里! 如果文件路径没写对,就会出现下面这种类似的报错,一般情况下,它会告诉你,你的路径没写对,或者找不到这个文件,这个文件不存在,不能打开连接等等错误!!
tmp <- read_xlsx("E:/data.xlsx", col_names = T)## Error: `path` does not exist: ‘E:/R/data.xlsx’
这个时候你就要去确认下,你的这个data.xlsx
文件到底在哪里!当你给它正确的路径时,它就不会报错。还要注意/ \ , " "
,这些标点一定要在英文状态下输入!
tmp <- read_xlsx("E:/R/data.xlsx", col_names = T)tmp
## # A tibble: 29 × 6
## 编号 治疗方式 性别 年龄 收缩压 血糖
## <dbl> <chr> <chr> <dbl> <dbl> <dbl>
## 1 1 方法1 男 56 134 6.3
## 2 2 方法2 女 45 123 4.6
## 3 3 方法3 男 67 112 7.4
## 4 4 方法4 女 56 113 8.5
## 5 5 方法5 男 78 115 6.3
## 6 6 方法6 女 56 116 4.6
## 7 7 方法7 男 67 134 7.4
## 8 8 方法8 女 45 123 8.5
## 9 9 方法9 男 67 112 6.3
## 10 10 方法10 女 87 113 4.6
## # … with 19 more rows
## # ℹ Use `print(n = ...)` to see more rows
这样我们就成功把文件读取到R里面了!
除了路径问题,对于新手还有几个点需要注意:
- 这个示例文件是有列名的,所以在读取的时候加了
col_names=T
这个参数,没有行名就要改成F
; - 如果你的数据使用了合并/拆分单元格、各种格式、公式等,会报错!
- 这个文件是
.xlsx
格式的,如果不是,那你需要用其他函数,比如read_xls()
函数读取.xls
结尾的文件; - 如果你读取中文遇到乱码问题,那大概率是遇到了编码问题,这是一个很复杂的问题:
- 首先你可以通过点击rstudio中的Tools - Global Options,到达以下界面,把默认编码方式改为
utf-8
,然后关闭rstudio,重新读取;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0LkHBpNt-1668216404004)(C:\Users\liyue\Desktop\Snipaste_2022-07-31_19-13-14.png)] - 有时直接升级R包/R/rstudio/,重新保存文件为utf-8等方式也可以解决问题;
- 如果都不行,直接百度!具体情况具体分析!
- 首先你可以通过点击rstudio中的Tools - Global Options,到达以下界面,把默认编码方式改为
csv
csv文件是一种逗号分隔文件,打开后和excel看起来一模一样,你不要问为什么看不到逗号…
一般推荐把excel文件另存为csv文件,因为方便R语言读取,不需要安装R包也可以读取~
csv <- read.csv("E:/R/data.csv", header = T)csv
## 编号 治疗方式 性别 年龄 收缩压 血糖
## 1 1 方法1 男 56 134 6.3
## 2 2 方法2 女 45 123 4.6
## 3 3 方法3 男 67 112 7.4
## 4 4 方法4 女 56 113 8.5
## 5 5 方法5 男 78 115 6.3
## 6 6 方法6 女 56 116 4.6
## 7 7 方法7 男 67 134 7.4
## 8 8 方法8 女 45 123 8.5
## 9 9 方法9 男 67 112 6.3
## 10 10 方法10 女 87 113 4.6
## 11 11 方法11 男 56 115 7.4
## 12 12 方法12 女 78 116 8.5
## 13 13 方法13 男 67 134 6.3
## 14 14 方法14 女 56 123 4.6
## 15 15 方法15 男 78 112 7.4
## 16 16 方法16 女 56 113 8.5
## 17 17 方法17 男 45 115 6.3
## 18 18 方法18 女 67 116 4.6
## 19 19 方法19 男 56 134 7.4
## 20 20 方法20 女 78 123 8.5
## 21 21 方法21 男 56 112 6.3
## 22 22 方法22 女 67 113 4.6
## 23 23 方法23 男 45 115 7.4
## 24 24 方法24 女 67 116 8.5
## 25 25 方法25 男 87 134 6.3
## 26 26 方法26 女 56 123 4.6
## 27 27 方法27 男 78 112 7.4
## 28 28 方法28 女 67 113 8.5
## 29 29 方法29 男 56 115 6.3
或者用read.table()
函数读取。
csv <- read.table("E:/R/data.csv", header = T,sep = "," # 指定分隔符!!)csv
## 编号 治疗方式 性别 年龄 收缩压 血糖
## 1 1 方法1 男 56 134 6.3
## 2 2 方法2 女 45 123 4.6
## 3 3 方法3 男 67 112 7.4
## 4 4 方法4 女 56 113 8.5
## 5 5 方法5 男 78 115 6.3
## 6 6 方法6 女 56 116 4.6
## 7 7 方法7 男 67 134 7.4
## 8 8 方法8 女 45 123 8.5
## 9 9 方法9 男 67 112 6.3
## 10 10 方法10 女 87 113 4.6
## 11 11 方法11 男 56 115 7.4
## 12 12 方法12 女 78 116 8.5
## 13 13 方法13 男 67 134 6.3
## 14 14 方法14 女 56 123 4.6
## 15 15 方法15 男 78 112 7.4
## 16 16 方法16 女 56 113 8.5
## 17 17 方法17 男 45 115 6.3
## 18 18 方法18 女 67 116 4.6
## 19 19 方法19 男 56 134 7.4
## 20 20 方法20 女 78 123 8.5
## 21 21 方法21 男 56 112 6.3
## 22 22 方法22 女 67 113 4.6
## 23 23 方法23 男 45 115 7.4
## 24 24 方法24 女 67 116 8.5
## 25 25 方法25 男 87 134 6.3
## 26 26 方法26 女 56 123 4.6
## 27 27 方法27 男 78 112 7.4
## 28 28 方法28 女 67 113 8.5
## 29 29 方法29 男 56 115 6.3
是不是很简单,注意点和excel一样~
txt
txt文件也是我们常见的文件类型,通常这种数据也是可以直接读取的,不同安装R包。
现在我们有一个这样的txt文件,它可能看起来不规整,但其实是规整的哦~~,不要被表象迷惑,也千万不要试图用空格键把它对齐!!
txt是tab
键分隔的文件,在读取时,一定要指定分隔符:
tmp <- read.table("tmp.txt",sep = "\t", # 必须要指定分隔符header = T)
tmp
## 编号 治疗方式 性别 年龄 收缩压 血糖
## 1 1 方法1 男 56 134 6.3
## 2 2 方法2 女 45 123 4.6
## 3 3 方法3 男 67 112 7.4
## 4 4 方法4 女 56 113 8.5
## 5 5 方法5 男 78 115 6.3
## 6 6 方法6 女 56 116 4.6
## 7 7 方法7 男 67 134 7.4
## 8 8 方法8 女 45 123 8.5
## 9 9 方法9 男 67 112 6.3
## 10 10 方法10 女 87 113 4.6
## 11 11 方法11 男 56 115 7.4
## 12 12 方法12 女 78 116 8.5
## 13 13 方法13 男 67 134 6.3
## 14 14 方法14 女 56 123 4.6
## 15 15 方法15 男 78 112 7.4
## 16 16 方法16 女 56 113 8.5
## 17 17 方法17 男 45 115 6.3
## 18 18 方法18 女 67 116 4.6
## 19 19 方法19 男 56 134 7.4
## 20 20 方法20 女 78 123 8.5
## 21 21 方法21 男 56 112 6.3
## 22 22 方法22 女 67 113 4.6
## 23 23 方法23 男 45 115 7.4
## 24 24 方法24 女 67 116 8.5
## 25 25 方法25 男 87 134 6.3
## 26 26 方法26 女 56 123 4.6
## 27 27 方法27 男 78 112 7.4
## 28 28 方法28 女 67 113 8.5
## 29 29 方法29 男 56 115 6.3
其他
如果是spss软件产生的.sav
文件,可以使用foreign
包中的read.spss()
函数读取,或者使用haven
包中的read_sav()
。
这两个包在使用前需要先安装哦~
# foreign包读取
library(foreign)
spss <- foreign::read.spss("例03-05.sav",to.data.frame = T)spss
## no hb
## 1 1 112
## 2 2 137
## 3 3 129
## 4 4 126
## 5 5 88
## 6 6 90
## 7 7 105
## 8 8 178
## 9 9 130
## 10 10 128
## 11 11 126
## 12 12 103
## 13 13 172
## 14 14 116
## 15 15 125
## 16 16 90
## 17 17 96
## 18 18 162
## 19 19 157
## 20 20 151
## 21 21 135
## 22 22 113
## 23 23 175
## 24 24 129
## 25 25 165
## 26 26 171
## 27 27 128
## 28 28 128
## 29 29 160
## 30 30 110
## 31 31 140
## 32 32 163
## 33 33 100
## 34 34 129
## 35 35 116
## 36 36 127
# haven包读取
library(haven)
spss <- read_sav("例03-05.sav")spss
## # A tibble: 36 × 2
## no hb
## <dbl> <dbl>
## 1 1 112
## 2 2 137
## 3 3 129
## 4 4 126
## 5 5 88
## 6 6 90
## 7 7 105
## 8 8 178
## 9 9 130
## 10 10 128
## # … with 26 more rows
## # ℹ Use `print(n = ...)` to see more rows
这个例子是比较简单的,有时候需要指定特定的编码方式,可以通过使用?read_sav/?read.spss
查看更改编码的方式。
haven
这个包是专门设计用来读取spss/SAS/STATA格式的文件的~
如果是rdata/Rdata/RData
文件,这个是R自带的格式,直接load()
即可,但是要注意一定要写对文件路径!! 或者也可以直接双击rdata/Rdata/RData
文件!
load(file = "tmp.rdata")
tmp
## 编号 治疗方式 性别 年龄 收缩压 血糖
## 1 1 方法1 男 56 134 6.3
## 2 2 方法2 女 45 123 4.6
## 3 3 方法3 男 67 112 7.4
## 4 4 方法4 女 56 113 8.5
## 5 5 方法5 男 78 115 6.3
## 6 6 方法6 女 56 116 4.6
## 7 7 方法7 男 67 134 7.4
## 8 8 方法8 女 45 123 8.5
## 9 9 方法9 男 67 112 6.3
## 10 10 方法10 女 87 113 4.6
## 11 11 方法11 男 56 115 7.4
## 12 12 方法12 女 78 116 8.5
## 13 13 方法13 男 67 134 6.3
## 14 14 方法14 女 56 123 4.6
## 15 15 方法15 男 78 112 7.4
## 16 16 方法16 女 56 113 8.5
## 17 17 方法17 男 45 115 6.3
## 18 18 方法18 女 67 116 4.6
## 19 19 方法19 男 56 134 7.4
## 20 20 方法20 女 78 123 8.5
## 21 21 方法21 男 56 112 6.3
## 22 22 方法22 女 67 113 4.6
## 23 23 方法23 男 45 115 7.4
## 24 24 方法24 女 67 116 8.5
## 25 25 方法25 男 87 134 6.3
## 26 26 方法26 女 56 123 4.6
## 27 27 方法27 男 78 112 7.4
## 28 28 方法28 女 67 113 8.5
## 29 29 方法29 男 56 115 6.3
如果是rds
文件,这个也是R常用的格式,使用readRDS()
函数即可,也要注意文件路径。
tmp <- readRDS(file = "tmp.rds")
tmp
## 编号 治疗方式 性别 年龄 收缩压 血糖
## 1 1 方法1 男 56 134 6.3
## 2 2 方法2 女 45 123 4.6
## 3 3 方法3 男 67 112 7.4
## 4 4 方法4 女 56 113 8.5
## 5 5 方法5 男 78 115 6.3
## 6 6 方法6 女 56 116 4.6
## 7 7 方法7 男 67 134 7.4
## 8 8 方法8 女 45 123 8.5
## 9 9 方法9 男 67 112 6.3
## 10 10 方法10 女 87 113 4.6
## 11 11 方法11 男 56 115 7.4
## 12 12 方法12 女 78 116 8.5
## 13 13 方法13 男 67 134 6.3
## 14 14 方法14 女 56 123 4.6
## 15 15 方法15 男 78 112 7.4
## 16 16 方法16 女 56 113 8.5
## 17 17 方法17 男 45 115 6.3
## 18 18 方法18 女 67 116 4.6
## 19 19 方法19 男 56 134 7.4
## 20 20 方法20 女 78 123 8.5
## 21 21 方法21 男 56 112 6.3
## 22 22 方法22 女 67 113 4.6
## 23 23 方法23 男 45 115 7.4
## 24 24 方法24 女 67 116 8.5
## 25 25 方法25 男 87 134 6.3
## 26 26 方法26 女 56 123 4.6
## 27 27 方法27 男 78 112 7.4
## 28 28 方法28 女 67 113 8.5
## 29 29 方法29 男 56 115 6.3
常见的就是这些,当你掌握这些简单的之后,你可以尝试更加复杂的,以后肯定也会遇到,不过有了这些简单的作为基础,相信你能更快的解决这类问题~
写出文件(从R语言另存为其他格式)
写出文件我觉得比读取文件要简单一点,如果你实在不知道怎么保存,有个简便方法,在这个地方:
直接点击保存,就会在你当前工作目录产生一个RData
文件,下次直接load
或者双击即可快速打开你的所有东西!!!
不太推荐直接保存为excel格式,建议使用csv格式。
如果是想把当前文件保存为csv文件,可以使用以下函数:
# 把tmp这个数据框保存为csv
write.csv(tmp, # 要保存的对象file = "D:/111.csv", # 保存到哪里,保存为什么格式,.csv不要忘记!quote = F, # 不加引号row.names = F, # 行名col.names = T # 列名)write.table(tmp,file = "D:/111.csv", # 保存到哪里,保存为什么格式,.csv不要忘记!sep = ",", # 必须指定分隔符!!!quote = F, # 不加引号row.names = F, # 行名col.names = T # 列名)
如果要保存为或者txt文件,可以使用以下函数:
write.table(tmp,file = "D:/222.txt",sep = "\t", # 千万别忘记指定分隔符!!quote = F, # 不加引号row.names = F, # 行名col.names = T # 列名)
如果要保存为rdata/Rdata/RData
文件,直接用save()
函数,简单方便,下次直接load即可,还可以同时保存多个对象!!
推荐大家平时保存时选择rdata/Rdata/RData/rds
,方便,官方!
save(tmp,csv, # 同时保存多个对象file = "tmp1.rdata")
保存为rds
格式:
saveRDS(tmp, file = "tmp.rds")
以上就是常见的数据读取和写出,最后再说一遍注意点:
- 输入法需要是英文状态下的标点符号!
- 文件路径必须写对!
- 注意不同文件的分隔符!
- 不同文件使用不同函数读取/写出!不要所有的格式都用一个!
- 如果碰到不知道的格式读取,直接百度!!99.999%能解决你的问题!
希望大家以后再也不要碰到数据读取问题!
本文首发于:医学和生信笔记,完美观看体验请至公众号查看本文。
初学者使用R语言读取excel/csv/txt的注意事项相关推荐
- R语言读取excel文件实战(read.xlsx函数、read_excel函数、read.xlsx函数、Write函数)
R语言读取excel文件实战(read.xlsx函数.read_excel函数.read.xlsx函数.Write函数) 目录 R语言读取excel文件实战(read.xlsx函数.read_exce ...
- r语言读取excel数据_R语言 | 更快的表格文件读取方法!
友情提示:蓝色下划线字体为引文,请保持警惕! 使用R语言读取 Affymetrix Human Exon 1.0 ST Array 芯片平台探针注释文件: https://www.affymetrix ...
- r语言读取excel数据_R语言操纵Excel进行数据透视与批处理
作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量.机器学习.数据可视化.应用统计建模.知识图谱等,著有& ...
- 05pandas读取excel csv txt文件
pandas丨数据读取与保存 读取excel文件: pandas.read_excel() 保存excel文件: pandas.to_excel() pandas.read_excel(io, she ...
- R语言读取Excel表格数据并绘制多系列柱状图、条形图
本文介绍基于R语言中的readxl包与ggplot2包,读取Excel表格文件数据,并绘制具有多个系列的柱状图.条形图的方法. 首先,我们配置一下所需用到的R语言readxl包与ggplot2 ...
- R语言读取Excel电子表格数据7种方法比较(结果惊呆本宝宝)
宝宝已惊呆,说不出话来,该选哪种方法读取Excel表格里的数据,我相信大众的眼睛是雪亮的: 1.实验规模16.3989万行,22列 实验电脑配置环境,说好了不能瞧不起博主啊哈 > nrow(re ...
- R语言读取Excel文件的方法
[软件版本] 操作系统:Win7 旗舰版 R语言版本:R-3.6.3-win.exe RStudio版本:RStudio-1.3.1093.exe RTools版本:Rtools35.exe Java ...
- 【两行命令】R语言读取excel数据
安装库 安装xlsx install.packages("xlsx") 使用 library(xlsx) ray = read.xlsx('D:/Code/R/Data in Ex ...
- R语言读取Excel文件的一系列陷阱
你想用R读取一个Excel文件,你觉得这事没啥难的,就像所有的文件读取,只需要知道文件名就万事大吉了. 于是,你把1.xls放到读取.R的文件夹下面,重命名为1.csv,打开rstudio,执行下面这 ...
最新文章
- Win2D 官方文章系列翻译 - 避免内存泄漏
- Solaris的md5sum和sha1sum命令
- SGI重获新生 有望下月摆脱破产保护
- Tensorflow安装笔记
- Angulary应用依赖里的zone.js
- 您的第一个Lagom服务– Java Microservices入门
- python如何处理数据_python数据处理之如何选取csv文件中某几行的数据
- github 如何设置项目的语言显示
- SQL2005恢复只有mdf文件的数据库
- 中label换行问题_如何巧妙处理 Git 多平台换行符问题(LF or CRLF)
- 密码编码学与网络安全讲的是什么
- C盘扩容:如何把D盘内存扩展到c盘?
- WIN10系统安装虚拟机以及CentOS7
- This service allows sftp connections only
- crc错误 modbus poll_请教个MODBUS RTU的CRC校验问题?-工业支持中心-西门子中国
- 最新!CCF-A类顶会WWW2020最佳论文出炉!OSU最佳论文
- 【脚本工具】QQ个人数据管理方法与脚本
- Maintainability-Oriented Software Construction Approaches
- git 删除远程仓库中的文件(夹)
- VSCode图片预览插件 Image preview
热门文章
- 仿淘宝商品放大展示效果制作(放大镜效果)
- SO_REUSEADDR 套接字,解决(Address already in ues)问题
- ASW3642 pin√pin替代TS3DV642方案,可使用原小板只需简单调整外围|ASW3642 HDMI二切一双向切换器方案
- ASW3642/HDMI 二进一出方案与TS3DV642使用对比|HDMI切换器
- VMware17虚拟机Linux安装教程(详解附图,带VMware Workstation 17 Pro安装)
- 安卓CSGO开箱模拟器2去除已知广告
- jupyter notebook启动中常见的几个小问题
- 408计算机组成原理视频,冷月手撕408之计算机组成原理(1)-导学
- 【Unity】静态优化工具支持UGUI合批分析、AB包冗余分析、预制体使用资源情况分析
- CentOS安装视频播放器MPlayer