在应用R进行数据分析之前,首先要做的一步工作就是将数据导入R工作环境。
原文链接:R语言数据的导入、输出及调整
R所识别的数据通常为“X·Y”型的多变量数据,格式为txt或csv格式,不同数据间以制表符(Tab)或“,”间隔。
输入数据可以使用excel进行录入和基本格式的修改,之后另存为,选择制表符分隔的文本(.txt)或CSV UTF-8(逗号分隔)(.csv)。
R中最常使用read.table()和read.csv()命令对数据进行导入。
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")
参数解读:
如导入的文件与运行的R脚本位于同一文件夹中,则无需输入绝对路径,只需输入文件名即可。
通常数据的第一行为列名,第一列为行名,此时可以将参数设置为“header = TRUE, row.names = 1”。
data <- read.table(file = "tem.txt", header = TRUE, row.names = 1, sep = "\t"
其余参数一般默认即可。
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"))
参数解读:
#将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(X, MARGIN, FUN, ...)
相关的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", ...)
参数解释:
#首先要安装并载入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 C
1 1 a Day
2 2 b Day
3 3 c Month
4 4 d Month
5 5 e Year
data1 <- melt(data, id.vars = "A")
data1
A variable value
1 1 B a
2 2 B b
3 3 B c
4 4 B d
5 5 B e
6 1 C Day
7 2 C Day
8 3 C Month
9 4 C Month
10 5 C Year
相关推荐:
基于R语言的非参数与半参数回归模型
R语言回归及混合效应(多水平/层次/嵌套)模型及贝叶斯实现实践技术