【发布时间】:2021-01-10 20:07:17
【问题描述】:
我想编写一个循环来处理具有 200 多个 data.frames 的大数据,每个 data.frame 有不同的行数。在每个 data.frame 中,我想选择前 3 行,然后进行分析。如果数据有第四行,我需要将它添加到第 3 行,然后如果数据有第五行,我需要将它添加到四行,依此类推,直到我得到 n-1 行。
例如,在第一个 data.frame 中,我有 n=6 行,我想选择前 3 行,然后进行分析(如预测和更多分析),然后将第四行添加到之前选择的 3 行,然后执行我的分析。
year <- c("1977", "1988", "1990", "2000", "2010", "2015")
y <- c(-0.12, -0.32, -0.23, -0.13, -0.4, -0.1)
s <- c(0.012, 0.023, 0.067, 0.076, 0.088, 0.003)
data <- data.frame(year, y, s)
所以我想将前 3 行处理为
year y s
1 1977 -0.12 0.012
2 1988 -0.32 0.023
3 1990 -0.23 0.067
然后将第四行添加到之前选择的 3 行中,然后进行我的分析。
year y s
1 1977 -0.12 0.012
2 1988 -0.32 0.023
3 1990 -0.23 0.067
4 2000 -0.13 0.076
然后将第五行添加到之前选择的 4 行中,然后进行我的分析。
year y s
1 1977 -0.12 0.012
2 1988 -0.32 0.023
3 1990 -0.23 0.067
4 2000 -0.13 0.076
5 2010 -0.40 0.088
另一个 data.frame 有 n=33 行,所以我需要从前 3 行开始,然后进行分析,然后将第四行添加到前 3 行,然后进行分析,直到达到行号 n-1= 32 在最后一行之前(data.frame 有 n=33)。
通过 for 循环,我可以分别处理每个 data.frame,但对于每个 data.frame,我想要一种方法,如何仅选择前 3 行然后进行分析,然后添加新行直到第 n-1 行
【问题讨论】:
-
不清楚预期。可能是,您需要
lapply(3:(nrow(df1) -1), function(i) head(df1, i))。如果是list的 data.frames,则lapply(lst1, function(dat) lapply(3:(nrow(dat)-1), function(i) head(dat, i))) -
@akrun 谢谢,但我需要分别处理每个选定的行。
-
如果您检查
lapply和3:(nrow(df1) -1),它会进行循环选择 -
对不起,我没明白,例如,我怎样才能得到每个选定行的均值和方差?
-
你的意思是'y'和's'?
标签: r