R语言进阶之三:数据汇总/透视/提炼

本文介绍了R语言中如何进行数据的汇总、透视和平行操作,通过示例展示了`array`函数创建矩阵,然后利用`rowSums`、`colSums`进行行和列求和,以及使用`table`进行频数统计。
摘要由CSDN通过智能技术生成
汇总、透视、提炼、凝炼,对数据处理来说这些词的意思都差不多,R语言提供了很多函数处理这些事情,还有一些软件包也提供了非常方便的数据汇总功能,方法不胜枚举。summary是获取数据概要最常用的函数,应该很熟悉了。这里只简单介绍rowSums, colSums, rowMeans, colMeans, table、apply、lapply、sapply、vapply、tapply、mapply、by 和 aggregate 等函数的用法。
一、行列求和、平均值和频度
rowSums, colSums, rowMeans, colMeans 可以简单理解为按行或列求和或求均值,table把数字或字符当成因子统计频度,都相当简单:

> a <- array(rep(1:3, each=3), dim=c(3,3))
> a
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 1 2 3
[3,] 1 2 3
> rowSums(a)
[1] 6 6 6
> colSums(a)
[1] 3 6 9
> table(a)
a
1 2 3
3 3 3

对于多维数组,rowSums, colSums, rowMeans, colMeans的使用稍为复杂点。它们的参数为:

colSums (x, na.rm = FALSE, dims = 1)
rowSums (x, na.rm = FALSE, dims = 1)
colMeans(x, na.rm = FALSE, dims = 1)
rowMeans(x, na.rm = FALSE, dims = 1)

其中dims为整数,表示哪个或哪些维数被看做行或列,对于row统计函数,dims+1及以后的维度被看做行,对于col函数,dims及以前的维度(1:dims)被看做列:

> b <- array(rep(1:3, each=9), dim=c(3,3,3))
> b
, , 1

[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1
[3,] 1 1 1

, , 2

[,1] [,2] [,3]
[1,] 2 2 2
[2,] 2 2 2
[3,] 2 2 2

, , 3

[,1] [,2] [,3]
[1,] 3 3 3
[2,] 3 3 3
[3,] 3 3 3

> rowSums(b)
[1] 18 18 18
> rowSums(b,dims=1)
[1] 18 18 18
> rowSums(b,dims=2)
[,1] [,2] [,3]
[1,] 6 6 6
[2,] 6 6 6
[3,] 6 6 6
> colSums(b)
[,1] [,2] [,3]
[1,] 3 6 9
[2,] 3 6 9
[3,] 3 6 9
> colSums(b,dims=2)
[1] 9 18 27

table可以统计数字出现的频率,也可以统计其他可以被看做因子的数据类型:

> table(b)
b
1 2 3
9 9 9
> c <- sample(letters[1:5], 10, replace=TRUE)
> c
 [1] "a" "c" "b" "d" "a" "e" "d" "e" "c" "a"
> table(c)
c
a b c d e
3 1 2 2 2

如果参数不只一个,它们的长度应该一样,结果是不同因子组合的频度表:

> a <- rep(letters[1:3], each=4)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值