我想通过改变块大小来分割R中的数据,但每个观察都是唯一的

时间:2015-05-12 02:24:50

标签: r

我已经设法读取了一个数据文件,并将我要使用的2列信息进行了子集化。我现在卡住了,因为我需要将数据分成不同大小的块并对它们应用函数(mean,sd),保存块并绘制每个块的sd。否则通常称为块平均。现在我有一个包含2列和10005行的数据框。它的头部看起来像这样:

Frame    CA
    1 0.773

是否有一种有效的方法可以从a:b中对数据进行子集,以便我可以决定“Frame”列如何分解数据?我在这里找到了非常好的答案,但我不确定它们的意思是什么,或者它们是否有用。

chunk <- function(x, n) 
(mapply(function(a, b) (x[a:b]), seq.int(from=1, to=length(x), by=n), 
      pmin(seq.int(from=1, to=length(x), by=n)+(n-1), 
          length(x)), SIMPLIFY=FALSE))

1 个答案:

答案 0 :(得分:0)

我不确定它是否是您正在寻找的东西,但是通过关闭,数据框可以通过任意索引进行子集化。

(如果Frame可以由a:b进行子集化,那么它很可能是一个序列,因此可以通过行索引生成一个子集?)

df <- data.frame(group = sample(c("a", "b"), 20, replace = T),
                 val = rnorm(20))

# closure - returns a function that accepts from and to
subsetter <- function(from, to) {
    function(x) {
        x[from:to, ]
    }
}

# from and to are specified
sub1 <- subsetter(2, 4)
sub2 <- subsetter(1, 5)

# data is split from to to
sub1(df)
#group        val
#2     a  0.5518802
#3     b  1.5955093
#4     a -0.8132578

sub2(df)
#  group        val
#1     b  0.4780080
#2     a  0.5518802
#3     b  1.5955093
#4     a -0.8132578
#5     b  0.4449554