【R语言】dplyr包经典函数summarise函数
dplyr包经典函数summarise函数,后面改名乘reframe函数了,但是summarise仍然适用
这个函数的返回结果是一个新的数据框,下面讲一下几种常见用法
示例数据为R自带的数据集mtcars
1.不分组
mtcars %>%summarise(mean = mean(disp), n = n())其中mean表示计算观测值也就是disp的平均值,n()计算观测值的个数,因为没分组所以只有一行也就是整个数据框mtcars中的disp列的平均值以及一共计算了多少个disp加起来之后的平均值,其实就是数据框的行数
2.group_by(col)情况,group_by只传一列,分组使用函数group_by,分组之后原数据框打印出来并没有任何不同,一般是为了配合后面summarise函数使用的
mtcars %>%group_by(cyl) %>%summarise(mean = mean(disp), n = n())按照cyl进行分类,cyl列一种有三种取值,所以最终返回的新数据框有三行,有两列,第一列是mean代表每种cyl取值对应的disp的平均数,第二列是每个平均数的观测值有多少个,这里实际上就是每种cyl有多少个
3.group_by(col1,col2)情况,表示按照每个col1和col2的独特组合来分组
mtcars %>%group_by(cyl, vs) %>%summarise(cyl_n = n())
分多组与分一组的区别在于返回的新数据框会多出来分多组的列,比如我上面分了cyl, vs两列,那么返回的新数据框就会有这两列,再加上手动创建的cyl_n列
其中cyl三种取值,vs两种取值,把他两个放一起分组,意思就是统计每个cyl和vs独特组合的对应统计量,比如统计每个这样的独特组合有多少行,每个独特组合disp的平均值等等,理论上来讲返回的新数据框最多有3乘2等于6行,但实际上可能少于6行,因为可能有一些组合在原数据框中并不存在,比如vs=1,cyl=8的就不存在