这篇文章主要介绍了R语言 实现data.frame 分组计数、求和等操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
df为1个data.frame对象,有stratum和psu两列,这里统计stratum列计数
方法1:
cnt = table(df$stratum)
方法2:
cnt = tapply(df$psu, INDEX=df$stratum, FUN=length)
在方法2的基础上,只要改变FUN函数就可以实现分组求和、求均值等功能,如下
分组求均值:
tapply(df$psu, INDEX=df$stratum, FUN=mean)
#(等价于python中的df.groupby('stratum').psu.mean)
补充:R语言 | 自定义函数对数据集(data.frame)的列进行条件判断计算
1.使用iris数据集
> iris_10 <- head(iris, n = 10)
## 自定义函数:如果x >= 5.0, z = y *10
> get_With_function <- function(x, y, z){
+ if(x >= 5.0){
+ z <- y * 10
+ }
+ c(zlie = z )
+ }
2.保险起见,设定z列为0,可能也不需要
> iris_10$z <- 0
3.运用自定义函数,对data.frame的x行进行判断,对y列进行运算,赋值到z列
4…注意Map的使用
> iris_10$z <- with(
+ iris_10,
+ Map(
+ get_With_function,
+ iris_10$Sepal.Length,
+ iris_10$Sepal.Width,
+ z
+ )
+ )
> iris_10
Sepal.Length Sepal.Width Petal.Length Petal.Width
1 5.1 3.5 1.4 0.2
2 4.9 3.0 1.4 0.2
3 4.7 3.2 1.3 0.2
4 4.6 3.1 1.5 0.2
5 5.0 3.6 1.4 0.2
6 5.4 3.9 1.7 0.4
7 4.6 3.4 1.4 0.3
8 5.0 3.4 1.5 0.2
9 4.4 2.9 1.4 0.2
10 4.9 3.1 1.5 0.1
Species z
1 setosa 35
2 setosa 0
3 setosa 0
4 setosa 0
5 setosa 36
6 setosa 39
7 setosa 0
8 setosa 34
9 setosa 0
10 setosa 0
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程学习网。如有错误或未考虑完全的地方,望不吝赐教。
沃梦达教程
本文标题为:R语言 实现data.frame 分组计数、求和等
基础教程推荐
猜你喜欢
- R语言基于Keras的MLP神经网络及环境搭建 2022-12-10
- swift版webview加载网页进度条效果 2023-07-05
- asm基础——汇编指令之in/out指令 2023-07-06
- Go web部署报错panic: listen tcp xxxxxxx:8090: bind: cannot assign requested address 2023-09-05
- swift 字符串String的使用方法 2023-07-05
- R包ggtreeExtra绘制进化树 2022-12-14
- R语言数可视化Split violin plot小提琴图绘制方法 2022-12-10
- ruby-on-rails-使用Nginx的Rails的多阶段环境 2023-09-21
- R语言-如何将科学计数法表示的数字转化为文本 2022-11-23
- UEFI开发基础HII代码示例 2023-07-07