- ?
怎样把复杂的数据变简单?用R语言做主成分分析呗
火玫瑰
展开
作者:麦子
当我们做完基因、RNA等芯片之后通常会拿到一组特别恐怖的数据,几百个基因几×几十个样本,这时候我想看这些基因的表达差异是否影响到样本的分布。可是有这么多基因,它们各自肯定都有影响,一个个看是不是很不现实。
比如这个样子,甲基化芯片检测了416个位点的甲基化程度,看不同样本间是否有差异。一共132个样本,分两组。
这当然只展示了一很小的部分。
每个样本由416个位点来描述,也就是416个变量,或叫416个维度。咱们生活的空间是3维的啊,如果要精确描述这132个样本的位置,就是建一个416维的空间把它们定位,这是很不现实的。所以要对它进行降维处理之后再观察。
主成分分析(PCA)就是常用的一种降维方法,提取出这么多变量中对样本影响最大的成分。但它不是挑选出某几个变量,而是根据它们的方差贡献,经过线性变换,得到新的变量,即“主成分”。
但再仔细观察,你会发现这表格的坑相当多,从代测公司拿回来就这样。我拉开展示变量名称的那几列,都只是在用不同的参数描述一个样本!
小数点前面是样本编号;小数点后面的Signal A是非甲基化等位基因密度(U),Signal B是甲基化等位基因密度(M),Beta值即甲基化水平值,Beta = M / (M+U+100),而Intensity就是Signal A + Signal B。
况且,它这样样本为行甲基化位点为列,做出来的PCA其实反应的是样本对不同位点甲基化水平的影响,这跟我们的研究目的是相反的,所以要把它倒过来。
你再仔细找找说不定还有缺失值,也有可能等你做了一半才发现,这都是惨淡的现实。
你已经能想到处理它要有多头痛了。不仅要提取每个样本的beta值那一列,还要把它的行和列翻转过来^0.0^我知道大家毕竟医学出身,对R语言代码有点怵,但如果表格简单一点、规模小一点,用SPSS也可以简单完成,但面对如此严酷的事实,咱们还是硬着头皮敲代码吧。其实做下来也不是那么难。
数据预处理
先检查一下缺失值,还都是beta值(唉我是做到一半才发现的,不得不倒回来处理)。在Excel中打开表格,全选,Ctrl+G,在弹出的对话框中点定位条件,查找空值:
确定之后会自动选中缺失值的单元格,我们随便填个颜色标注出来。处理缺失值的一般方法,可以删除那个样本,或者以均值或中值填充。但既然在本案例中我们知道它的含义,而且有条件算出来,那我还是计算一下吧。
找到一个填了颜色的空值,在其中按Excel格式输入公式,使其符合beta值的计算方法,比如D82的空值就应该输入“=F82/(E82+F82+100)”,然后选中该单元格并Ctrl+C,保持它被选中有虚线围绕的状态。
然后再做一次找空值的操作,这回可以全选表格来查找,也可以只选中有数据的表格(因为后面有几列是跟PCA无关的内容)。找到空值之后Ctrl+V,就把刚才的公式填上了。这样就可以导入RStudio。
下面,书写的格式,就按R中的习惯吧,“##”后面的文字是大步骤,“#”后面的文字是对上一行代码的注释
## 准备工作环境
rm(list = ls)
# 把工作空间先清理干净
setwd("D:/PCA")
# 设置工作目录
library(pca3d)
library(rgl)
library(readxl)
# 载入以上这些R包。如果你还没安装,就先用install.packages(‘包的名称’)装上,再运行library。装包的时候好像要翻墙,其他时候不用。
Raw<- read_excel("Raw.xlsx", sheet = "Tissues")
#用read_excel函数读取原Excel文件,并把它命名为Raw。其实也可以从菜单“File→Import Dataset→From Excel”导入,反正也是调用这个函数。随意啦。
这样就可以在Environment选项卡中看到这个超大的表格。以后操作过程中可以随时观察这个选项卡中添加了哪些元素。
## 提取所需数据
num<- seq(from = 4, to = 663, by = 5)
# 定义我们需要的大表格中列的编号。回去观察那个大表,第一个样本的beta值在第4列,所有芯片数据的最后一列是第663列,是个Intensity,from和to就是选定这个范围。我们需要的是beta值,每隔5列出现一个,所以by=5。同理,如果我们需要的是single_A,那么from=5。
Data<- Raw[,num]
# 把从大表格中提取出来的小表格命名为Data。后面的[,num]就是刚才挑选的列号了。
DataRev<- t(Data)
# 把小表格的行和列翻转过来,形成一个新的表,命名为DataRev。可以在Environment中可以点击各表查看效果。
Group<- c(rep('Ca',66), rep('NA',66))
# 因为患者的个体编号和分组编号混起来了,所以我们要另外添加一列Group,表示分组。这是定义Group的内容,66个Ca(癌组织)和66个NA(癌旁组织)。
DataRevG<- data.frame(DataRev, Group = Group)
# 把上面的Group添加到DataRev表中,形成的新表命名为DataRevG。
到这里,准备工作才做完。
PCA运算及绘图
## 主成分分析
DataRevG_sub<- subset(DataRevG, select = -Group)
# 因为PCA是不需要Group那列的,那是为将来绘图准备的,所以要建一个子表,把那列减去,命名为新表,原名加上后缀_sub。
DataRevG.pca<- prcomp(DataRevG_sub, scale. = TRUE)
#用prcomp函数对那个子表做分析,并把结果拎出来,命名为DataRevG.pca的一个大集合。
Pca.sum<- summary(DataRevG.pca)
#对PCA结果做描述性分析,命名为pca.sum。可以从这里查看分析的各项结果。
Importance<- data.frame(Pca.sum$importance)
# 提取pca.sum中的Importance,独立出来成为一个叫Importance的新数据框,它展示的是主成分的重要度。其实不提取也可以,但提出来是为了方便观察。点开它可以看到,它分为标准差、方差贡献率、累积贡献率三行。我们主要看累积贡献率。
PC1是第一个主成分(Principal Component),它的贡献率是30.51%,PC2贡献了8.95%,两者累积39.46%,依此累推。这就决定我们选取几个主成分来观察样本。一般来说,选取累积贡献率达到80%-90%的前几个,有时候2个就满足了,可以做个二维图,不行就三维。
但本例中有点意外,前3个PC贡献率并没有那么高,说明影响较大的主成分比较多。这时可以画个碎石图来观察主成分的分布规律。
screeplot(DataRevG.pca, type = 'line', lwd = 2)
# 画碎石图,type就是碎石图的类型,lwd是线宽。
这样看来,第三个主成分之后,方差贡献趋于平缓,那我们还是选取前三个来作图分析。
## 作图
open3d
# 打开3D图形窗口。
par3d(windowRect = c(100, 100, 612, 612))
# 重设窗口大小。
pca3d(DataRevG.pca, components = 1:3, group = DataRevG$Group, col = c('Ca' = 'light blue', 'NA' = 'yellow'), show.axes = T, show.axe.titles = F, shape = 'sphere', show.plane = F)
# 画散点图。Componets选第1-3个,group则按DataRevG中的Group这一列来分,col是分别给每组的样本选个颜色,show.axes是显示坐标轴,T是指True,即显示,后面的是坐标轴名,F自然就是False不显示了。这些都可根据自己的喜好设置,更详细的参数可以在RStudio的Help中搜索函数名pca3d来查看。
axes3d(edges = 'bbox', labels = T, box = F)
# 给图加个带坐标的边框。
legend3d("topright", legend = c('Ca','NA'), col = c('light blue','yellow'), pch = 16, cex = 1, inset = c(0.02))
# 加上图例。注意颜色和组名的顺序要跟上面作图时一致。
好了,终于可以看效果了:
在这个小窗口里,3D图是可以旋转的。找到个好角度,就可以截图下来了。截图,当然不是用日常工具了~用下面这个函数,截成期刊需要的格式:
rgl.postscript('Example.eps', fmt = 'eps', drawText = T)
# 这是截成eps格式。另外也支持ps、tex、pdf、svg、pgf这些优质图片的格式。就是截出来的矢量图文件有点大。
就这样做好了。
- ?
R语言、Excel哪个更能胜任数据分析?
陶静芙
展开
我从事数据分析工作已经有十年之久。最初是出于工作需要,我的经理丢给我一堆数据,我需要处理这些数据。当时我一直使用的工具是 Excel,因为这是我熟练掌握的一款工具。
三年前,我开始接触到 R,一开始因为功能太多而坚决抵制使用。后来我开始琢磨如何使用。现在我基本不怎么使用 Excel 了。这只是我个人的观点,但是如果你要分析数据,R 更胜任这项任务。下面来说说为什么 R 更适合数据分析。
这两款工具的使用方法截然不同。使用 Excel 时,可以通过鼠标点击完成大部分工作,你可以访问界面内不同位置的各种工具。因此 Excel 非常便于使用(熟能生巧),但是用 Excel 处理数据非常费时,而且如果接手一个新项目,你必须单调地重复这些流程。使用 R 时,则通过代码完成所有操作。你把数据载入内存,然后运行脚本来研究并处理数据。这个工具可能不够人性化,但是有以下几点好处。
我认为,从概念上来说,R 更便于使用。如果你在处理多列数据,虽然你只是在处理单个任务,但是却会看到所有的数据。而使用 R 时,数据都在内存中,只有调出数据才能看到。如果你在转换或计算,你会处理相关列或行的子集,其他所有数据都在后台。我觉得这样更便于关注手头的任务。完成任务后,可将其保存在某个数据帧中,其中只包含所需的列或行数据。你建立了正确的数据集,可解决当前的问题。这样做看似无关紧要,但实际上大受裨益。
借助 R,就可以对其他数据集轻松重复相同的操作。因为所有数据都是通过代码进行处理和研究,因此对新的数据集执行相同的操作也就轻而易举了。使用 Excel 时,大多数操作都是通过鼠标点击实现,虽然用户体验不错,但对新的数据重复操作却非常费时而枯燥。而 R 只需载入新的数据集,然后再次运行脚本即可。
实际上,用代码操作也便于诊断并共享你的分析结果。使用 Excel 时,大多数的分析结果都基于内存(数据透视表在这里,公式编辑器在另一个表格上等)。而在 R 中,通过代码执行所有操作,一目了然。
如果你在修正一个错误,你很清楚在哪里操作,而如果你需要共享分析结果,只需复制粘贴代码即可。在线查找帮助时,你能准确说明所用数据,并提出具体的问题。事实上,大多数时候,你在线提问时,人们都是直接贴出准确的代码,来解决你的问题。
R 中的项目组织更简单。在 Excel 中,我要准备一系列表格,可能还要准备多个工作簿,然后适当命名,而且各文件名不得重复。我的项目备注分别保存在各个文件中。我的R语言项目组织单独设有一个文件夹,我处理过的所有内容都放在其中。清理数据、探索性图表及模型。这样便于我理解和查找,也为与我一起工作的其他人提供方便。当然,Excel 也能做到井井有条。我觉得 R 的简洁性更便于使用。
上述几点只能说是锦上添花,而并不是必不可少。在没有这些功能之前,我也用了好几年 Excel,你应该也一样。现在,我想讲讲 R 和 Excel 真正的区别。我想说的是,除了以上那些花哨的小优势之外,R 更适合用于数据分析。原因如下。
你可以把任何数据载入 R。数据的保存位置或保存形式并不重要。你可以载入 CSV 文件,也可以读取 JSON,或者执行 SQL 查询,抑或提取网站。你甚至还可以在 R 中通过 Hadoop 处理大数据。
R 是一个完整的工具集,使用的是数据包。在分析数据时,R 比 Excel 更实用。你可使用 R 执行数据管理、分类和回归,也可以处理图片,并执行其他所有操作。如果机器学习是你的专业,那能想到的任何算法都是小菜一碟。目前,R 可用的数据包逾 5,000 个,因此无论你要处理什么类型的数据,R 都能应付自如。
R 的数据可视化效果非常卓越。说句实话,Excel 的图表非常出色,简单易懂。但 R 的效果更好。
我觉得这是 R 最实用的功能之一。借助 ggplot2,你可以快速创建所需的各种图表,并根据图表形状自行调整。在你熟悉了如何用 ggplot2 创建一个图表后,任何其他图表都不在话下。ggplot2 还能制作更多类型的图表。你能用 Excel 创建 散点图矩阵吗?用 R 就能轻松创建这种矩阵,CDF plot 也是如此。Excel 棋差一招。
Git 版本控制。我一向习惯保存多个版本的分析结果。Git 是至今为止我找到的最好用的工具。 用 RStudio 作为编辑器,其支持项目。创建一个项目仓库,然后你就能跟踪数据研究的不同版本。你可以创建不同版本的 Excel 文件,但是这些保存的二进制文件无法显示相互之间的更改部分。
而 R 非常简单。 我已经说了很多理由。总之,Excel 是一款不错的数据分析工具。我相信它能不负众望完成所有任务。但是,如果你只有这一款工具,则会大大影响你的工作效率。相比之下,R 更好用,而且提供的工具集模块更完整。而缺点在于不是非常易于上手,用户一开始相对要花很多时间学习使用。
如果坚持下去,就会有所收获,不仅对数据更了解,还提高了自己的能力。
每个人的使用习惯不同,对数据分析来说不管是R语言还是Excel只要能高效运用在工作当中,都是好工具。
End.
来源:网络大数据
ps:大家可以在评论区留言,一起讨论下你更喜欢R还是Excel,并说一下为什么!也可以讲讲在日常工作中工具的使用问题,小编会请专业的老师一一为大家解答的!
- ?
专题一 R语言编程从入门到实战—第1章(3) 数据导入
水中月
展开
工作目录
获取当前工作目录getwd( )
改变当前工作目录
setwd("C:UsersDocuments")
#注:R中斜杠为右斜杠
CSV文件导入
Data<-read.csv("mydata.csv",head=TRUE)
#head=TRUE/FALSE,表示文件第一行是否包含变量的名称;如果缺少,该值会依据文件格式自动确定
TXT文件导入
Data<-read.table("mydata.txt",sep="delimiter")
#sep为文件分隔符的类型,默认为sep=" "
EXCEL文件导入
#如果EXCEL工作簿中只有一个工作表,推荐导成csv文件导入
.xlsx文件
install.packages("xlsx")#安装需要的包
library(xlsx)#载入需要的包
Data<-read.xlsx("mydata.xlsx",n)#n表示获取工作簿中的第n个工作表
#可以使用?read.xlsx来获取更多的帮助文件,了解更多read.xlsx()的功能
.xls文件
install.packages("RODBC")
library(RODBC)
Databook<-odbcConnectExcel("mydata.xls")#获取Excel的工作簿
Datasheet<-sqlFetch(Data,"sheet1")#获取工作簿里面具体的表格
odbcClose(Databook)
从网页抓取数据
其中一种基本思路是使用函数readLines( )下载网页,然后使用grep( )和gsub( )等函数来处理它,对于结构复杂的网页,可以使用RCurl包和XML包来提取其中想要的信息
#之后会针对网页数据抓取与分析给出具体的实战案例
键盘输入数据
Data<-data.frame(age=numeric(0),gender=character(0))
Data<-edit(Data)
# edit( )函数可以启动数据编辑器,对数据框中的数据进行编辑,如下图所示:
R还可以导入XML数据,SPSS数据,SAS数据等,以及可以访问MySQL, Oracle, Microsoft Access等多种数据库,以下给出简单总结,感兴趣的读者可以进一步查询相关资料学习
R语言数据导入总结 - ?
专题一 R语言编程从入门到实战—第1章(3) 数据导入
小丫头
展开
工作目录
获取当前工作目录
getwd( )
改变当前工作目录
setwd("C:\Users\Documents")
#注:R中斜杠为右斜杠\
CSV文件导入
Data<-read.csv("mydata.csv",head=TRUE)
#head=TRUE/FALSE,表示文件第一行是否包含变量的名称;如果缺少,该值会依据文件格式自动确定
TXT文件导入
Data<-read.table("mydata.txt",sep="delimiter")
#sep为文件分隔符的类型,默认为sep=" "
EXCEL文件导入
#如果EXCEL工作簿中只有一个工作表,推荐导成csv文件导入
.xlsx文件
install.packages("xlsx")
#安装需要的包
library(xlsx)
#载入需要的包
Data<-read.xlsx("mydata.xlsx",n)
#n表示获取工作簿中的第n个工作表
#可以使用?read.xlsx来获取更多的帮助文件,了解更多read.xlsx()的功能
.xls文件
install.packages("RODBC")
library(RODBC)
Databook<-odbcConnectExcel("mydata.xls")
#获取Excel的工作簿
Datasheet<-sqlFetch(Data,"sheet1")
#获取工作簿里面具体的表格
odbcClose(Databook)
从网页抓取数据
其中一种基本思路是使用函数
readLines( )
下载网页,然后使用
grep( )
和
gsub( )
等函数来处理它,对于结构复杂的网页,可以使用
RCurl包
XML包
来提取其中想要的信息
#之后会针对网页数据抓取与分析给出具体的实战案例
键盘输入数据
Data<-data.frame(age=numeric(0),gender=character(0))
Data<-edit(Data)
# edit( )函数可以启动数据编辑器,对数据框中的数据进行编辑,如下图所示:
R还可以导入XML数据,SPSS数据,SAS数据等,以及可以访问MySQL, Oracle, Microsoft Access等多种数据库,以下给出简单总结,感兴趣的读者可以进一步查询相关资料学习
- ?
R语言基础(4)——数据导出
牧又蓝
展开
在学习好数据的导入以后,我们就可以用R进行数据分析了,今天我们来学习的是跟导入相辅相成的功能,数据的导出。
数据导出:
在完成数据的分析工作之后,现在我们要将数据导出了,我们还是介绍两种类型csv和txt。
导出CSV文件:
write.table (data, file ="C:\\Users\\Administrator\\Desktop\\resultCsv.csv", sep =",", row.names =FALSE)
运行以上代码,你的对应路径中就会产生一个名为resultCsv.csv的数据文件:
导出TXT文件:
write.table(data,file="C:\\Users\\Administrator\\Desktop\\resultTxt.txt" , sep =" ", row.names =FALSE,col.names =TRUE, quote =FALSE)
sep指定变量间分隔符,默认为空格,row.names指定是否输出行号,col.names指定是否输出列名,quote指定是否用引号将变量包括。
跑完代码之后,你对应的文件夹目录下就多对出一个名为newdata的TXT格式数据文件。
wx 数据科学养成记
欢迎关注~
- ?
R导入excel文件方法
樊涔
展开
今天,小编给大家简单讲一下R导入excel文件的方法。首先,打开Rstudio,在交互界面输入install.packages("readxl"),这行代码是安装相关的包,导入excel文件包有很多种,这里小编仅介绍一种。注意,代码中是字母l不是数字1
安装好后,我们输入library(readxl),这行代码是加载包。然后输入d<-read_excel("C:\\Users\\Administrator\\Desktop\\示例.xlsx"),这里d是引入的变量,作用可以理解为存储文件的一个东西(当然,可以这样理解,不深究是否形容准确),<-是R中的符号,我们可以大致理解为“=”号。后面跟着的是一个函数,括号内是excel文件的路径,绝对路径。(后面我们再谈相对路径)。注意,这里使用\\符号,不使用\
导入是否成功呢?我们可以查看,直接输入我们引入的变量d,如下图
这样,我们就把excel文件导入到R中来了,可以使用这些数据进行绘图,数据分析等。具体怎么操作,我们后面再聊。
好了,今天小编主要介绍导入excel文件的方法。第一次需要安装包,后面就不需要了。然后加载包,输入上述代码就可以了,文件路径根据自身情况选择哦!
- ?
R语言数据导入——二部
Hana
展开
上期我们了解了R语言数据读入的核心函数read.table,现在我们了解一下其他可以用的函数有哪些,以及使用的场景和基本技巧。
非关系结构文件读入scan()
除了read.table()这类读取文本文档的函数,还可以用scan()函数读入。不同的是它的返回值为列表或者向量。
假设我们有下述文本文档
24
1991
21
1993
53
1962
下列命令可以读入该数据
data<-scan("e:/birth.txt")data
## [1] 241991211993531962
此外,你代码稍加改造可以将数据变矩阵。
matrix(data,nrow=2,byrow=FALSE)
## [,1][,2][,3]
scan()也同样支持访问url数据上的数据,现在我们访问网上的一个age数据
data<- scan("https://s3.amazonaws/assets.datacamp/blog_assets/age.csv", what = list(Age = 0,
## $Age
注意上述代码中的what参数,如果what为list类通过上述代码可以读入类似于spreadsheet类型的文本文档。只需要定义每行中各个项目(列)的类型。scan()其他众多参数的用法和read.table比较类似。
固定列宽数据读入read.fwf()
有的时候我们可以知道每一列的宽度是多少,下列代码可以让我们读入这类数据
data<- read.fwf("https://s3.amazonaws/assets.datacamp/blog_assets/scores.txt", widths= c(7,-14,1,-2,1,1,1,1,1,1),
## subject sex s1s2s3s4s5s6
上述代码中width参数给出了字段的宽度。本例中,前7个字符为课程名字;然后的14个字符我们认为不需要,用-14跳过;接着,性别这一列需要一个宽度的字符;后面的2个空格不需要,用-2跳过;后续的成绩每列需要一个宽度1,1,1,1,1,1传入参数中。这些参数在不同的数据结构下,会有所不同。
另外,还可以使用read.fortran()函数读取数据,详细方法可以参见help文档理解。
导入excel数据
剪切板导入excel表格
如果你已经有了个打开的表格,你可以复制其中的内容,然后用readClipboard()或者read.table()函数导入数据。
readClipboard()#Only on Windows
RODBC包读入excel数据
通过RODBC包同样可以导入excel数据表。代码样例如下
library(RODBC)
其中,dsn的写法可以参考odbcConnect()函数的帮助文档。此外,odbcConnectExcel()同样可以读入excel数据。
当你读入了Excel数据表后,相当于建立了一个连接,你可以使用sql语句来操作数据
query<- "
" 用RODBC包的建立了连接后,在操作完数据要使用odbcCloseAll()
其他方法读入excel数据
其他可以参考的方法有: * openxlsx包中的read.xlsx函数。 * readxl包中的read_excel函数。
其他类型的数据读入
其他主流数据类型R可支持的包括有JSON格式,SPSS文件,Stata文件,SAS文件,s-plus文件,EpiInfo文件,matlab文件,Octave文件,FitbitScraper 数据,Quantmod 数据,ARFF 文件。 支持导入的数据库有,MogoDB,MySQL,Oracle,PostgreSQL,SQLite,RJDBC,dBase等。
二进制数据读入
二进制数据由二进制浮点组成,8个浮点为一个字节。可以使用readBin函数读入此类数据。
connection<- file("
", "rb") #You open the connection as "reading binary"(rb) GIS数据读入
地理信息数据在R中也比较常用,常见的rgdal和raster包都有对应的函数处理此类数据。
大型数据集的读入
如何导入较大的数据一直是R用户的经常讨论的问题,除了将数据导入数据库中处理外,也有一些比较不错的处理大型数据的方法。
data.table包中的fread函数是比较容易实现快速读入大数据的方法,读入大型数据速度相当理想。
library(data.table)
ff包:该程序包磁盘缓存的技术可以读入超过内存限值大小的数据,常用的函数有read.table.ffdf(),read.csv.ffdf()等。
library(ff)
bigmemory包,此包也常用于处理大型数据。样例代码如下,但是此包不能用于windows系统:
library(bigmemory)
sqldf包,此包也可以考虑用于处理大型数据,它还可以使用sql语句处理数据。用read.csv.sql()函数读入数据。
library(sqldf)
随后我们别忘了R中的read.table函数,但是,用此函数读入大型数据,需要对参数有较好的控制。简单说,你能设置的参数越多,读入数据的速度越快。
总结
最后,我们将上述常见的方法做个了总结表格,读者可在用时参考,该表格涵盖了大部分常用数据格式的读入方法。
函数
来源
描述
scan
r-base
顺序读取文件中的数据值
read.fwf
按行和指定列宽度读取数据
read.fortran
采用fortran格式设置读取固定格式数据
readClipboard
读取剪切板中的数据
odbcConnect
RODBC包
读取excel数据,采用odbc
gs_read
googlesheet包
读取google sheet
read.DIF
读取DIF文件
read_excel
readxl包
读取excel文件
read.xlsx
openxlsx包
读取excel的xlsx文件
read.ods
readODS包
读取open document表格文档
fromJSON
jsonlite包
读取JavaScript的json文件
read_spss
haven包
读取spss文件
read_dta
读取stata文件
read.xport
forgein包,sasXPORT包
读取sas文件
read.S
foreign包
读取s-splus文件
read.epiinfo
读取epi Info文件
readMat
R.matlab包
读取MATLAB文件
read.octave
读取Octave文件
read.arff
读取Weka属性关系文件(ARFF)
…
mongolite包,Rmongo包,RODBC包,Roracle包,RPostgreSQL包,RSQLite包,RJDBC包
各类常见数据库导入数据到R
readBin
读入二进制文件
hdf5包,h5r包,rhdf5包,RNetCDF包,ncdf包
读入hdf文件,NASA和UCAR常用气象数据读取
read.dbf
读入DBF文件
read.ftable
读入无格式列联表Flat contingency table
fread
data.table包
大型文本文档读入
read.table.ffdf read.csv.ffdf …
ff包
read.big.matrix
bigmemory包
大型文本文档读入,无法在windows下使用
read.csv.sql
sqldf包
read.table
大型文本文档读入,但是需要合理设计参数,否则速度不理想
来源:DataCamp 编译:亮亮
- ?
数据科学养成记 之 R语言基础(1)——数据导入
Saimaa
展开
在配置好R语言的环境,安装好RStudio后,想要进行数据分析,我们首先要进行数据的导入。R语言支持的数据类型很多,包括数据库文件,excel文件,csv文件,txt文件等等。本文介绍在作者日常中最常用到的csv及txt文件的读取,excel文件虽然也是日常中的常用文件,但是由于excel本身的行数限制及读取需要专用包的支持,在我的日常中经常是将excel另存为csv或者txt再导入R中进行数据分析。
准备工作:
首先在excel中创建如下文件:
另存为成csv和txt文件保存在桌面,名称分别为为R1.csv,R1.txt
TXT文件导入:
文件路径在桌面,名为R1.txt
#txt文件导入
dataTxt<- read.table("C:\\Users\\Administrator\\Desktop\\R1.txt",header = T)
#如果文件内数据第一行不是标题,需要在括号内路径后指定顶行不为标题,read.table("文件路径",header = F)(需要注意下R中文件的路径与PC上文件路径使用的斜杠格式及方向)
导入后,数据文件存放在右上侧Environment项目下的Data列表中,可以直接点击查看,也可以通过view(dataTxt)预览数据,或者head(dataTxt)预览数据前几行。
CSV文件导入:
文件路径在桌面,名为R1.csv
#csv文件导入
dataCsv<- read.csv("C:\\Users\\Administrator\\Desktop\\R1.csv", header=T)
#其他参数包括分隔符等可在R中输入help("read.table")查看。
有问题请留言,大家一定在RStudio中实践一遍,熟能生巧!
- ?
数据科学养成记 之 R语言基础(3)——excel数据导入
语蝶
展开
经过昨天对包的学习,今天我们利用前两节课学习的知识来对excel数据进行导入。
我们常见的excel导入方法为以下3种:
1.将Excel转存为csv格式文件,读csv文件。
a<- read.csv('exercise1.csv', header = T)
2.利用RODBDC包读取excel
b<- odbcConnectExcel2007('exercise1.xls')
#32位操作系统使用odbcConnectExcel函数
sqlTable(b)
根据需求读取sheet1
b<- sqlFetch(b, 'Sheet1$')
odbcClose(b) #关闭语句
3.利用openxlsx包读取excel
c<- read.xlsx('exercise1.xlsx', sheet = 1)
综合来看,openxlsx的方法简单粗暴,少有bug出现。被评为R语言和Excel读取的神器。
注意,openxlsx包仅适用于.xlsx格式文件。前期的xls格式文件可能还需要前两种方法来读取。除了以上三种方法,还有类似的包如xlsx、readxl。
用读取excel来验证前两节课的学习成果吧!
wx 数据科学养成记
欢迎关注!
数据科学yang'cheng'j - ?
R学习笔记系列—R语言从文本和Excel文件中读取数据
邬迎曼
展开
1.4.1 从文本文件中导入数据
可以使用 read.table() 函数从带分隔符的文本文件中导入数。调用格式为:
这个函数看上去很复杂,但其实很多参数在使用时不用明确指出来,使用默认值可以满足绝大部分情况,因此实际使用还是比较简单的,下面我们简单介绍一下参数含义。
file: 字符型,文件名称,要从中读取文件的完整路径。
header: 逻辑型,指定是否在首行包含变量名,默认为 FALSE。
sep: 字符型,分割字符,默认为"",代表空白字符,包括空格(一个或多个)、制表符、 换行符、回车
dec: 字符型,指定小数点字符,默认为".",一般不用修改。
numerals: 字符型,在数字转换会损失精度时的处理方法,allow.loss 表示允许精度损失;warn.loss 允许精度损失,但显示一条警告信息;no.loss 不允许精度损失,即转换为数字,而是转换为因子或者不转换,保留字符串形式。
row.names 字符向量,为行指定名称。
col.names 字符向量,为列指定名称,若列名在第一行定义好了,可不用。
stringAsFactors: 逻辑型,是否将字符串自动编码为因子,默认为 TRUE。
na.strings: 字符向量,定义代表缺失值的字符串,比如c("N",".")会将 "N" 和"." 两个字符读取为缺失值,默认为 "NA"。
colClasses: 字符向量为列指定类型,比如c("numeric","character")指定第一列为数值型,第二列为字符型,若将某列指定为字符串,则不会将其自动编码为因子。
nrows: 数值型,读取的最大行数,负数为不限制。
skip: 数值型,读取前跳过的行数。
check.names: 逻辑型,是否检查变量名在 R 中的有效性,默认为 TRUE。
fill: 逻辑型,是否自动填充空白值,若各变量行数不一致,是否为空白列添加空白值。
strip.white: 逻辑型,是否自动过滤掉字符型变量前后的空格。
comment.char: 字符型,注释字符,以此字符开头的行将被忽略。
blank.lines.skip 逻辑型,是否忽略空白行,默认为 TRUE。
allowEscapes: 逻辑型,是否处理 C 语言风格的转意符。
text: 字符型,直接指定要读取的字符串,此时 file 应该为空。
encoding: 字符型,输入文本的编码,若出现乱码,请尝试更改此选项。
fileEncoding: 字符型,文件编码,若出现乱码,请尝试更改此选项。
假定我们有一个文本文件,students.txt,记录了6个学生的性别、身高和体重情况,其内容如下:
那么我们可以用以下方式读取:
read.table() 是读取按行列组织的数据的基础方式,其它同类函数,比如 read.csv() 等其实是用特定的选项调用了 read.table() 函数。在 read.table() 函数时,应尽量注意以下几点。
1.建议明确地在首行定义变量名,并加上参数 header = TRUE。
2.默认的分隔符为"",可以用空格、制表符、换行符等空白字符分割内容,若非空白分割,则需明确指出。
3.字符型变量会被自动转换为因子型,在读大型文件时,将 stringsAsFactors 设置为 False,能加快读取速度。
4.默认情况下,read.table 用 # 作为注释标识字符。如果碰到该字符(除了在被引用的字符串内),该行中随后的内容将会被忽略。
5.read.table()会尽量为每个变量选择合适的数据类型,若你想明确指定请用colClasses,或者生成后根据需要修改。
6.若读中文时出现乱码,请尝试改变编码
1.4.2 从 Excel 表格中读取
从 Excel 里读取数据最简单的办法就是将 Excel 表格存储为以逗号分割的 csv 文件,然后用 read.csv() 函数读取。read.csv() 函数其实就是 read.table() 的定制版,其用法与 read.table() 基本一致。
若要直接读取 Excel 文件,则需安装专门的包,本书推荐 readxl 包。
readxl 中有若干读取 Excel 数据的函数,最常用的是 read.excel()。调用格式为:
path: 字符型,文件路径sheet: 字符型或数值型。若为字符型,则指定 Sheet 名;若为数值,则指定 Sheet 的位置;若不指定,默认第一个Sheetrange: 字符型或数值型,读取的单元格范围,比较复杂,请查看文档col_names: 逻辑型或字符型向量;若为逻辑型,则指定是否将第一行作为变量名;若为字符向量,则直接定义各列名col_types: 字符型向量,定义各列数据类型,比如c("numeric","character");若不指定,则自动匹配na: 字符型向量,指定读取为缺失值的字符串 ,默认情况下,会将空单元格读取为缺失值trim_ws: 逻辑型,是否自动过滤掉字符型变量前后的空白(空格、制表符、换行符skip: 数值型,读取前跳过的行数,因为空白的行会自动跳过,所以这是最小的被跳过的行数n_max: 数值型,最大读取行数guess_max: 数值型,猜测列类别时,检测的最大行数
假如,在 d 盘有一名为 students.xls 的 Excel 文件,你可以通过如下方式读取。
喜欢闲适安静的生活,懂一点计算机编程,懂一点统计学和数据分析。(爱编程爱统计)
r导入excel数据
-
1、只需3秒快速实现求和
-
2、如何快速填充序号
-
3、如何自动填充序号(公式法)
-
4、数据条的神奇应用
-
5、多文本快速合并
-
6、查找与替换的不同玩法
-
7、快速定位到指定区域
-
8、数据排序、工资条制作
-
9、快速筛选(模糊、精确筛选)
-
10、快速插入空行
-
11、快速删除空行
-
12.快速跳转到天涯海角
-
13、.同时查看两个Excel文件
-
14、用条件格式扮靓报表
-
15、一键插入Excel图表
-
16、批量处理行高、列宽
-
17、利用拆分功能查看数据
-
18、批量录入相同内容
-
19、工作表快速跳转
-
20、批量录入表格模板(精品课程)
-
21、Excel函数与公式的应用、公式循环引用的查找
-
22、IF函数单条件判断同比增长
-
23、用sum函数 格式相同,连续多表数据汇总
-
24、excel快捷键
-
25、VLOOKUP函数——根据销售员匹配销售额
-
26、统计各部门销售总额
-
27、统计指定条件个数
-
28、怎样输入当前日期和时间、星期数
-
29、销售业绩排名
-
30、Sumproduct函数-万能函数(销售额汇总求和)
-
31、根据销售员,地区,商品名称汇总
-
32、批量替换PPT字体
-
33、给销售额数据批量添加万元单位
-
34、一秒快速核对两列数据
-
35、快速定位到指定单元格或区域
-
36、快速制作双行标题工资条
-
37、给你的表格做个瘦身
-
38、快速打开常用的Excel文件
-
39、快速打开多个Excel文件
-
40、利用创建组—快速隐藏/展开多列数据
-
41、快速制作下拉菜单
-
42、复制粘贴表格,如何保留数据源列宽格式一致?
-
43、两列数据位置互换
-
44、1秒钟扮靓报表——如何实现表格隔行换色
-
45、快速删除重复记录——保留唯一值
-
46、快速向下填充、向右填充,文本或公式
-
47、给Excel文件添加密码
-
48、插入带图片的批注
-
49、输入公式后不计算?
-
50、如何设置单元格缩进
-
51、快速解决Excel表格总显示货币格式
-
52、批量添加万元单位
-
53、你会四舍五入么?
-
54、用RAND函数机选彩票
-
55、冻结首行你会么?
-
56、超链接的高级应用
-
57、IFERROR函数-屏蔽错误值
-
58、批量填充颜色
-
59、录入数据
-
60、快速输入工号
-
61、快速行列转置
-
62、自定义缩放界面
-
63、多个单元格同时输入
-
64、如何计算立方米?
-
65、快速制作双行标题工资条
-
66、输入带方框的√和×
-
67、快速将姓名对齐
-
68、快速输入性别
-
69、按单位职务排序
-
70、自动计算合同到期日期
-
71、计算时间间隔
-
72、日期和时间的拆分
-
73、快速处理不规范的日期格式
-
74、快速填充合并单元格
-
75、效率加倍的快捷键
-
76、快速复制表格和对象
-
77、快速创建工作表副本
-
78、快速复制序列号
-
79、快速显示公式
-
80、多个单元格同时输入
-
81、快速调整显示比例
-
82、快速自动填充
-
83、快速填充(Ctrl+E)
-
84、Ctrl与数字键结合
-
85、快速将多列数据整理为1列
-
86、快速将1列数据拆分为多列
-
87、快速定位公式
-
88、快速录入数据
-
89、快速累计求和
-
90、身份证号码显示为0怎么办?
-
91、快速制作斜线表头
-
92、文本竖向显示
-
93、神奇的监视窗口
-
94、不一样的格式刷
-
95、快速美化图表
-
96、快速生成当前日期
-
97、快速找出循环引用
-
98、快速提取信息
-
99、二维表快速转换为一维表
-
100、快速多表合并