使用R语言聚合一系列值

使用R语言聚合一系列值,r,csv,range,aggregate,R,Csv,Range,Aggregate,我有一个CSV文件,有2000多行8列。csv的模式如下所示 col0 col1 col2 col3...... 1.77 9.1 9.2 8.8 2.34 6.3 0.9 0.44 5.34 6.3 0.9 0.44 9.34 6.3 0.9 0.44........ . . . 2000rows with data as above 我正在尝试从上述csv中聚合特定的行集(set1:rows1-76,set2:rows96-121..),例如在

我有一个CSV文件,有2000多行8列。csv的模式如下所示

col0   col1  col2 col3......
1.77   9.1   9.2  8.8
2.34   6.3   0.9  0.44
5.34   6.3   0.9  0.44
9.34   6.3   0.9  0.44........
.
.
.
2000rows with data as above
我正在尝试从上述csv中聚合特定的行集(set1:rows1-76,set2:rows96-121..),例如在1.77到9.34之间,以及对应行的所有列-这些行的聚合将是我输出文件中的一行。我尝试了各种方法,但我只能在csv文件中的一组中使用

输出将是一个csv文件,具有指定间隔的聚合值,如下所示

col0  col1  col2  col3
3.25   8.2   4.4   3.3  //(aggregate of rows 1-3)
2.2    3.3   9.9   1.2  //(aggregate of rows 6-10) 
and so on..

考虑到Manetheran所指出的,如果还没有这样做,您应该添加一列,显示哪一行属于哪一个集合

data.table-way:

require(data.table)

set.seed(123)
dt <- data.table(col1=rnorm(100),col2=rnorm(100),new=rep(c(1,2),each=50))

dt[,lapply(.SD,mean),by="new"]

   new       col1        col2
1:   1 0.03440355 -0.25390043
2:   2 0.14640827  0.03880684
require(data.table)
种子集(123)

dt这里有一种使用基本包的可能方法:

# Arguments:
# - a data.frame
# - a list of row ranges passes as list 
#   of vectors=[startRowIndex,endRowIndex]
#   used to split the data.frame into sub-data.frames
# - a function that takes a sub-data.frame and returns 
#   the aggregated result
aggregateRanges <- function(DF,ranges,FUN){
  l <- lapply(ranges,function(x){ 
    return(FUN(DF[x[1]:x[2],]))
  }
  )
  return(do.call(rbind.data.frame,l))
}

# example data
data <- read.table(
  header=TRUE,
  text=
    "col0   col1  col2 col3
  1.77   9.1   9.2  8.8
  2.34   6.3   0.9  0.44
  5.34   6.3   0.9  0.44
  9.34   6.3   0.9  0.44
  7.32   4.5   0.3  0.42
  3.77   2.3   0.8  0.13
  2.51   1.4   0.7  0.21
  5.44   5.7   0.7  0.18
  1.12   6.1   0.6  0.34")

# e.g. aggregate by summing sub-data.frames rows
result <- 
aggregateRanges(
  data,
  ranges=list(c(1,3),c(4,7),c(8,9)),
  FUN=function(dfSubset) { 
    rowsum.data.frame(dfSubset,group=rep.int(1,nrow(dfSubset)))
  }
)


> result
    col0 col1 col2 col3
1   9.45 21.7 11.0 9.68
11 22.94 14.5  2.7 1.20
12  6.56 11.8  1.3 0.52
#参数:
#-数据帧
#-行范围列表作为列表传递
#向量的数量=[startRowIndex,endRowIndex]
#用于将data.frame拆分为子data.frames
#-采用子data.frame并返回
#聚合结果

aggregateRanges使用什么函数进行聚合?你能提供一个小例子说明你有什么样的东西和你期望的结果吗?如果您可以向我们展示您尝试过的任何内容,这也将极大地帮助我们了解您的目标。您是否有列标记
设置
每行所属的内容?然后使用write.csv()。