按r中的数字序列分组

时间:2019-09-26 17:27:12

标签: r

说我有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)

2 个答案:

答案 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

%/%