数据的导入

在应用R进行数据分析之前,首先要做的一步工作就是将数据导入R工作环境。

原文链接:R语言数据的导入、输出及调整

R所识别的数据通常为“X·Y”型的多变量数据,格式为txt或csv格式,不同数据间以制表符(Tab)或“,”间隔

输入数据可以使用excel进行录入和基本格式的修改,之后另存为,选择制表符分隔的文本(.txt)或CSV UTF-8(逗号分隔)(.csv)

R中最常使用read.table()read.csv()命令对数据进行导入。

read.table

read.table(file, header = FALSE, sep = "", quote = ""'",dec = ".", 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")

参数解读:

  • file,导入文件的名称,要用绝对路径
  • header,逻辑参数,指定是否文件第一行定义为列名;
  • sep:
    指定数据分割字符,制表符为”\t”,逗号为”,”
  • na.strings:指定缺失文字
  • skip:指定读数据跳过的行数
  • nrows:指定数据读入最大的行数
  • dec:
    指定小数点记号
  • row.names与col.names,赋予数据行名和列名
  • colClasses,数据中每列的类型
  • comment.char 注释字符,即忽略携带此字符的行
  • stringsAsFactors字符变量是否变为因子

导入的文件与运行的R脚本位于同一文件夹中,则无需输入绝对路径,只需输入文件名即可。

通常数据的第一行为列名,第一列为行名,此时可以将参数设置为“header = TRUE, row.names = 1”

data <- read.table(file = "tem.txt", header = TRUE, row.names = 1, sep = "\t"

其余参数一般默认即可。

read.csv

read.table()命令可以解决绝大多数数据导入的问题,但是在个别情况下,会导致数据导入失败或格式错乱,本人之前曾经遇到过,发生次数极少,原因未知,此时可以试试read.csv()命令。

read.csv()命令的使用方法和参与基本上与read.table()一致

data <- read.csv(file = "tem.txt", header = TRUE, row.names = 1, sep = "\t", as.is = TRUE)

read.csv()命令导入数据时会自动的将非数值类型的数据是为因子(factor),但有时我们可能就是需要字符形式的数据,此时只需把as.is参数设置为TRUE即可。

报错解决

在做数据分析时,经常会碰到一些元素是以0开头的数字,在使用函数read.table或者read.csv等读取文件时,会自动的将开头的0去掉

可以通过设定read.table或者read.csv的参数colClasses=”character”来解决这一问题。

在导入数据时,会出现这样的错误:scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,:15行没有5元素

这是由于在提示的位置,数据的格式不规则导致无法识别,可以手动进行修改或者设定read.table的参数fill=TRUE来解决。

数据的导出

在进行一系列数据整理或统计学分析之后,可能需要导出结果数据,此时需要用到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"))

参数解读:

  • x为需要写入的文件,一般为一个数据框;
  • file为输入文件的路径和名字;
  • append如为FALSE,则任何同名的文件均会被替换;
  • quote规定输出的文件中的数字或字符是否被双引号括在内;
  • sep规定每一行中不同的值之间的间隔符;
  • eol规定在每一行最后的字符,“\n”代表换行
  • na规定代表缺失数据的字符;
  • dec规定小数点的表示符号;
  • row.names和col.names规定输出的文件中是否包含行名或列名;
  • qmethod规定如何处置双引号字符,默认为escape,此时忽略双引号,当设置为double时,则把双引号当做字符输出。
​#将data导出为result.txt文件write.table(data, file = "result.txt", sep = "\t", quote = FALSE)

数据框的基本调整

通过read.table或read.csv导入的数据一般为数据框格式(data frame),有时需要将数据框变为矩阵或着将矩阵变为数据框。

data <- as.matrix(data)data <- as.data.frame(data)

有些分析可能需要对数据进行转置

data <- t(data)

提取部分数据

使用[,]进行数据框中特定数据的选择,逗号前代表行,逗号后代表列,数字代表行或列的排序

#提取第一行第二列的数据data <- data[1,2]​#提取前5行或前5列data <- data[1:5,]data <- data[,1:5]​#提取第1、3、5行data <- data[c(1,3,5),]​#删除第一列data <- data[,-1]

apply()函数

apply()函数可以按照行或列对数据框进行计算和统计。

apply(X, MARGIN, FUN, ...)
  • X为需要进行计算的数据框
  • MARGIN指定计算方式
    • 1代表按照行计算
    • 2代表按照列计算
    • c(1,2)代表同时进行行和列计算
  • FUN为计算公式
    • sum代表求和
    • mean代表求平均数
    • max代表返回最大值
    • min代表返回最小值
    • ……

相关的FUN函数非常多样,根据自己的需要自行搜索即可。

#求data中每一行的总和a <- apply(data,1,sum)#返回的向量a中会按照行的顺序给出每一行的总和​#求data中每一列的平均值b <- apply(data,2,mean)

数据格式转换

通常意义上的“X·Y”型数据被称作“宽格式”,数据所属的分组由其在矩阵中的位置决定,例如数据a位于A行a列,则其分组信息即为“A”和“a”。

在部分R语言的函数中,其识别的数据类型并不是常规的“宽格式”而是“长格式”,在长格式的数据中,每一行代表一个条目,而其所属分组是在其它单独的列中指定。

在进行数据分析和可视化时,有时需要将“宽格式”的数据转化为“长格式”,此时就需要用到reshape2包中的melt()命令。

melt(data, id.vars, measure.vars,variable.name = "variable", na.rm = FALSE,value.name = "value", ...)

参数解释:

  • id.vars是被当做维度的列变量,每个变量在结果中占一列
  • measure.vars是被当成观测值的列变量,它们的列变量名称和值分别组成variable和value两列
  • 列变量名称用variable.name和value.name来指定
#首先要安装并载入reshape2包install.packages("reshape2")library(reshape2)​data <- data.frame(A=c(1:5),B=c("a","b","c","d","e"),C=c("Day","Day","Month","Month","Year"))​data  A B     C1 1 a   Day2 2 b   Day3 3 c Month4 4 d Month5 5 e  Year​data1 <- melt(data, id.vars = "A")data1   A variable value1  1        B     a2  2        B     b3  3        B     c4  4        B     d5  5        B     e6  1        C   Day7  2        C   Day8  3        C Month9  4        C Month10 5        C  Year

相关推荐:

基于R语言的非参数与半参数回归模型

R语言回归及混合效应(多水平/层次/嵌套)模型及贝叶斯实现实践技术