R语言数据的输入和输出操作

数据的载入

R本身已经提供了超过50个数据集,而在众多功能包中,默认的数据集被存放在datasets程序包中,通过函数data()k可以查看系统提供所有的数据包,同时可以通过函数library()加载程序包中的数据。

矩阵型数据最常用的读取方式是read.table()具体的调用格式是()

read.table(file, header = FALSE, sep = "", quote = "\"'",dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),row.names, col.names, as.is = !stringsAsFactors,
           na.strings = "NA", colClasses = NA, nrows = -1,skip = 0, check.names = TRUE, fill = !blank.lines.skip,strip.white = FALSE, blank.lines.skip = TRUE,
           comment.char = "#",allowEscapes = FALSE, flush = FALSE,stringsAsFactors = default.stringsAsFactors(), fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)

file是要读的数据文件名称;header = TURE表示文件第一行变化变量名,sep = ""表示文件中的分割符为空格,dec = "."用来表示小数点的字符,

row.names, col.names,用来表示向量的行名与列名, na.strings = "NA"用来表示缺失值,skip = 0跳过前几行

读入数据后,可以通过简单的函数来查看数据的基本信息。mode(),names(),dim(), 且使用attach()函数,便可以直接通过变量名来获取变量中的信息,函数detach()用于执行相反的操作。

处理其他格式的软件

当数据量较少时,在EXCEL中复制好要用的数据然后导入到R中。

> data.excel = read.delim("clipboard")
> data.excel
    X X1 X2       value
1   1 Be Be  1.00000000
2   2  B Be -0.20154586
3   3 Mg Be -0.31724811
4   4 Al Be -0.03359098

当数据量很多时,利用RODBC软件包(提供r和各类数据库的一个借口如access和SQL server等)所提供的方法便可以实现对Excel数据的直接访问~

读取来自网页的数据

在实际的应用中,从网站上直接获取数据也是非常常见的,例如国家统计局官方发布的权威统计数据,中国人民银行网站发布的经济数据或其他专业财经网站提供的股市、期货、债券数据都是进行宏观数据分析工作时常用的数据源。R读取网页中的HTML表格数据,需要用到XML程序包提供的readHTMLTable()函数。

readHTMLTable(doc, header = NA,
              colClasses = NULL, skip.rows = integer(), trim = TRUE,
              elFun = xmlValue, as.data.frame = TRUE, which = integer(),
               ...)

doc给出的是HTML文件或者网页地址,which是返回网页中的那几个表格,注意如果网址较长没在输入时需要换行,使用函数gsub将字符中的换行符删去。

baseURL = gsub("\\n", "", baseURL)

数据的保存

数据处理的结果或者中间结果应该被妥善保存,最基本的保存工作的函数为cat()函数。

cat(... , file = "", sep = " ", fill = FALSE, labels = NULL, append = FALSE)

参数file指定了输出的文件名,若文件已存在则原来的内容将被覆盖,若将参数append = T,则是在文件末尾追加内容。

> car = file("K:/car.txt")
> cat("Make lp100km mass.kg List.price", "\"Alpha Remeo\" 9.5 1242 38500", "\"Audi A3\" 8.8 1160 38700", file = car, sep = "\n")
> close(car)

更常用的写文件方式是把一个矩阵或者数据框以矩形块的形式整体写入文件,用write.table()函数

write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ", eol = "\n", na = "NA", dec = ".", row.names = TRUE,
            col.names = TRUE, qmethod = c("escape", "double"), fileEncoding = "")

数据预处理

常用的数学函数

sum(x) 对x中的元素求加和,

prod(x)对x中的元素求乘积,

max(x)/min(x)求x中元素的最大值和最小值,

range(x)返回取值范围,相当于[min(x),max(x)],

length(x)返回x中元素的个数,

median(x)返回x中元素的中位数,

var(x)求x中元素的方差,

sd(x)求x中元素的标准差,

cov(x,y)求x和y的协方差,

cor(x,y)求x和y的相关系数,

round(x,n)对x中的元素四舍五入,保留小数点后的第n位,

sort(x)/order(x)排序,默认升序,

rev(x)对x中的元素取逆序,

unique(x)对x中重复的元素只取一个,

table(x)统计x中完全相同的数据个数。

修改数据标签

names()函数可以获取数据集的列标签,dimnames()[[1]]表示对行标签进行操作如:dimnames()[[1]][1:3] = c("1","2","3")将数据的取1-3行的标签改为1-3,dimnames()[[2]]表示列。

缺失值的处理

> air_data = airquality[1:7,1:4]
> is.na(air_data)
  Ozone Solar.R  Wind  Temp
1 FALSE   FALSE FALSE FALSE
2 FALSE   FALSE FALSE FALSE
3 FALSE   FALSE FALSE FALSE
4 FALSE   FALSE FALSE FALSE
5  TRUE    TRUE FALSE FALSE
6 FALSE    TRUE FALSE FALSE
7 FALSE   FALSE FALSE FALSE
> sum(is.na(air_data))
[1] 3
> complete.cases(air_data)
[1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE
> complete.cases(air_data$Ozone)
[1]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE
is.na用来分析数据中是否含有缺失值,complete.cases则是判断每一行是否有缺失值,当数据量变大时,利用aggr()函数进行判断。
> air_data = airquality[1:31,1:4]
> aggr(air_data, las = 1, numbers = T)

图中的的小长条的长度表示各个变量的缺失数据的比例,可见wind和temp变量数据是完整的。

删除缺失样本

> data = air_data[complete.cases(air_data),]
> dim(data)
[1] 24  4
> data = na.omit(air_data)
> dim(data)
[1] 24  4

替换掉缺失值

用均值或者中位数去代替缺失值是通常的处理策略。

> air_data$Ozone[is.na(air_data$Ozone)] = median(air_data$Ozone[!is.na(air_data$Ozone)])

补充:R语言学习笔记--数据框输出和查看

(1)将数据框C输出为.csv文件

write.table(C,file="ABC.csv",sep = ",",row.names=FALSE)  

#ABC.csv将保存在R的工作目录下,当不加sep = " "时,输出的数据会在同一个单元格里,因此要加“,”。

(2)查看数据框C的行数和列数

行数:length(C[1, ])

列数:length(C[ ,1])

行数+列数:dim(C)

(3)查看数据框C的变量名即列名

colnames(C)

(4)查看数据框C的变量x1中不同值的个数

length(unique(C$x1))

(5)在console里的不同的输出方式

print()

cat ( )

换行的话加“\n”

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • R语言-使用ifelse进行数据分组

    数据分组,根据数据分析对象的特征,按照一定的数值指标,把数据分析对象划分为不同的区间部分来研究,以揭示内在的联系和规律性: 在R中,我们常用ifelse函数来进行数据的分组,跟excel中的if函数是同一种用法. ifelse(condition,TRUE,FALSE) > data <- read.table('1.csv', sep='|', header=TRUE); > > level <- ifelse( + data$cost<=20, "(0,2

  • r语言-如何将数据标准化和中心化

    中心化和标准化意义一样,都是消除量纲的影响 中心化:数据-均值 标准化:(数据-均值)/标准差 数据中心化: scale(data,center=T,scale=F) 数据标准化: scale(data,center=T,scale=T) 或默认参数scale(data) scale方法中的两个参数center和scale的解释: 1.center和scale默认为真,即T或者TRUE 2.center为真表示数据中心化 3.scale为真表示数据标准化 补充:R语言对数据进行标准化处理 有时候

  • R语言实现用cbind合并两列数据

    我有两个数据文件,分别只有一列,这两列数据行数一行,我想把这两列合并到一个数据文件中,方便使用. 我的两个数据文件分别是1.txt,2.txt,保存后的文件名是3.txt. // 代码如下 gow1<-read.table("1.txt",header = FALSE) gow2<-read.table("2.txt",header = FALSE) View(gow1) View(gow2) gow<-cbind(gow1,gow2) View(

  • R语言数据框中的负索引介绍

    以R语言自带的mtcars数据框为例: 这是原始的mtcars数据: 这里只列出了前面几行数据. 然后负索引mtcars[,-2:-3],得到的结果 删除了第二列和第三列数据 所以R语言数据框中的负索引是指删除数据框中对应的列(或者行) ps:这和Python里面的规则好像不太一样,Python里的负索引好像是指倒数第几列(或者第几行),这里这两个软件区别还挺大的~~写个笔记提醒一下自己~ 补充:R语言中的负整数索引 看代码吧~ > x<-matrix(c(1,2,3,4,5,6,7,8,9)

  • R语言-如何读取前n行数据

    通常我们读取文件时都会读取全部的文件然后再进行操作,但是当读取的数据量很大是读取的时间会很长,而且占用RAM,对于写测试代码有点不方便. 所以只读取前n行数据是一个挺不错的函数 ##file:读取文件路径 ##n:读取的前n行 ##header:是否有标题行 readfile<-function(file, n=1000, header=T){ pt <- file(file, "r") name <- NULL if(header){ name <- strs

  • R语言:数据筛选match的使用详解

    数据筛选是在分析中最常用的步骤,如微生物组分析中,你的OTU表.实验设计.物种注释之间都要不断筛选,来进行数据对齐,或局部分析. 今天来详解一下此函数的用法. match match:匹配两个向量,返回x中存在的返回索引或TRUE.FALSE match函数使用格式有如下两种: 第一种方便设置参数,返回x中元素在table中的位置 match(x, table, nomatch = NA_integer_, incomparables = NULL) 第二种简洁,返回x中每个元素在table中是

  • R语言数据的输入和输出操作

    数据的载入 R本身已经提供了超过50个数据集,而在众多功能包中,默认的数据集被存放在datasets程序包中,通过函数data()k可以查看系统提供所有的数据包,同时可以通过函数library()加载程序包中的数据. 矩阵型数据最常用的读取方式是read.table()具体的调用格式是() read.table(file, header = FALSE, sep = "", quote = "\"'",dec = ".", numera

  • Python3基本输入与输出操作实例分析

    本文实例讲述了Python3基本输入与输出操作.分享给大家供大家参考,具体如下: 数据的输入和输出操作是计算机最基本的操作,本节只研究基本的输入与输出,基本输入是指从键盘上输入数据的操作,基本输出是指屏幕上显示输出结果的操作. 2.1基本输入和输出 常用的输入与输出设备有很多,如摄像机.扫描仪.话筒.键盘等都是输入设备,然后经过计算机解码后在显示器或打印机等终端上输出显示. 2.2使用print()函数输出 ----基本语法: print(输出内容) #其中输出内容可以是数字和字符串 print

  • R语言数据建模流程分析

    目录 Intro 项目背景 前期准备 数据描述 数据清洗 预分析及预处理 数值型数据 类别型数据 特征 Boruta算法 建模 模型对比 Intro 近期在整理数据分析流程,找到了之前写的一篇代码,分享给大家.这是我上学时候做的一个项目,当时由于经验不足产生了一些问题,这些问题会在之后一点一点给大家讨论,避免各位踩坑.本篇分享会带一些讲解,可能有些地方不够清楚,欢迎留言讨论. 本次除了分享之外也是对自己之前项目的一个复盘.还是使用R语言(毕竟是我钟爱的语言).Python的如果有需求之后会放别的

  • 详解R语言数据合并一行代码搞定

    数据的合并 需要的函数 cbind(),rbind(),bind_rows(),merge() 准备数据 我们先构造一组数据,以便下面的演示 > data1<-data.frame( + namea=c("海波","立波","秀波"), + value=c("一波","接","一波") + ) > data1 namea value 1 海波 一波 2 立波 接 3 秀

  • R语言数据可视化ggplot添加左右y轴绘制天猫双十一销售图

    目录 构造数据集 绘制散点 修改两坐标轴信息 本文是以天猫双十一销量与增长率为例,原始的数据可以参考上一篇文章:用 ggplot 重绘天猫双十一销售额图,这里不再作过多的介绍. 同时整个的天猫双十一的销售额数据分析可以关注:天猫双十一"数据造假"是真的吗? 老规矩,先上最终成果(两张图只是颜色的差别): 上图左边 y 轴表示增长率的刻度,右边 y 轴表示销售额的数据,我们将两者在同一张图上进行展现.其实将两个统计图在同一个坐标系中呈现不算是这个绘图的难点,其真正的难点在与刻度的变换以及

  • R语言数据可视化学习之图形参数修改详解

    1.图形参数的修改par()函数 我们可以通过使用par()函数来修改图形的参数,其调用格式为par(optionname=name, optionname=name,-).当par()不加参数时,返回当前图形参数设置的列表:par(no.readonly=T)将生成一个可以修改当前参数设置的列表.注意以这种方式修改参数设置,除非参数再次被修改,否则一直执行此参数设置. 例如现在想画出mtcars数据集中mpg的折线图,并用虚线代替实线,并将两幅图排列在同一幅图里,代码及图形如下: > opar

  • R语言数据框合并(merge)的几种方式小结

    merge data frames (inner, outer, left, right) 数据 > df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3))) > df1 > CustomerId Product 1 1 Toaster 2 2 Toaster 3 3 Toaster 4 4 Radio 5 5 Radio 6 6 R

  • R语言数据重塑知识点总结

    R 语言中的数据重塑是关于改变数据被组织成行和列的方式. 大多数时间 R 语言中的数据处理是通过将输入数据作为数据帧来完成的. 很容易从数据帧的行和列中提取数据,但是在某些情况下,我们需要的数据帧格式与我们接收数据帧的格式不同. R 语言具有许多功能,在数据帧中拆分,合并和将行更改为列,反之亦然. 于数据帧中加入列和行 我们可以使用 cbind() 函数连接多个向量来创建数据帧. 此外,我们可以使用 rbind() 函数合并两个数据帧. # Create vector objects. city

  • R语言数据可视化ggplot绘制置信区间与分组绘图技巧

    目录 1. 单组情况 1)构造数据集 2)绘制置信区间 2. 多组情况 方法1 1)构造数据集 2)绘制置信区间 方法2 1)构造数据集 2)绘制置信区间 3)美化 1. 单组情况 1)构造数据集 x <- 1:10 y <- x^2 ci_l <- x^2 - 0.5 * x ci_r <- x^2 + 0.5 * x dat_plot <- data.frame(x, y, ci_l, ci_r) 数据集长下面这样: x y ci_l ci_r 1 1 1 0.5 1.5

随机推荐