其他
每天学习一点R:9.数据的调整
数据框的基本调整
通过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 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
扩展阅读