查看原文
其他

每天学习一点R:9.数据的调整

红皇后学术 红皇后学术 2022-06-07

数据框的基本调整

通过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

扩展阅读



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存