我已经设法读取了一个数据文件,并将我要使用的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))
答案 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