说我有iris
数据集。
data(iris)
数据集中有150行。
我该如何group_by
行前50行,然后group_by
行51:100,最后group_by
行101:150?
我正在使用的某些python代码(与虹膜数据无关):
data.reset_index().assign(groupId = lambda row: row.index // 1000)
答案 0 :(得分:2)
一种data.table
方法:
library(data.table)
setDT(iris)[, .( mean( Sepal.Length ) ), by = .( rleid( 0:(nrow( iris ) - 1) %/% 50) )][]
rleid()
用于创建分组汇总(在这种情况下,Sepal.Length
(按50行的分组)的平均值被计算到列V1
中。
rleid V1
1: 1 5.006
2: 2 5.936
3: 3 6.588
答案 1 :(得分:1)
打开选项为<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js"></script>
<div id="root"/>
(或另一个为gl
)
rep
或者另一个选择是library(dplyr)
iris %>%
group_by(grp = as.integer(gl(n(), 50, n()))) %>%
summarise_if(is.numeric, mean)
# A tibble: 3 x 5
# grp Sepal.Length Sepal.Width Petal.Length Petal.Width
# <int> <dbl> <dbl> <dbl> <dbl>
#1 1 5.01 3.43 1.46 0.246
#2 2 5.94 2.77 4.26 1.33
#3 3 6.59 2.97 5.55 2.03
%/%