R语言 实现data.frame 分组计数、求和等
程序员文章站
2022-05-05 16:03:47
df为1个data.frame对象,有stratum和psu两列,这里统计stratum列计数方法1:cnt = table(df$stratum)方法2:cnt = tapply(df$psu, i...
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
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
上一篇: MySQL 权限控制详解