分割数据帧并将函数应用于R中的2个不同行

问题描述 投票:0回答:2

我正在尝试将mi.meld应用于144个数据帧的列表,以便将估算值及其标准误差组合在一起。由于Amelia不适用于列表,因此我将其取消嵌套到大数据帧中,其中每两行对应于原始数据帧。下面是我的数据快照(288行)。

[我想找到一种不重复144次mi.meld(data,q=data[1,],data[2,])mi.meld (data,q=data[3,],data[4,])和142次以上的命令的快速方法...

因此,在第一种情况下,q应该是第一行的值的向量,依此类推...

谢谢,卢卡斯

   nn        V1         V2         V3
ARE.1  1 357.85116 356.859011 359.432494
ARE.2  1   8.54784   7.450074   9.711469
ARE.3  2 503.99528 506.120967 507.520785
ARE.4  2  14.52657  12.129299  14.469123
AUS.1  3 421.60845 423.302610 425.196122
AUS.2  3  29.31331  27.230948  28.605672
r split plyr imputation
2个回答
0
投票
rownum <- seq_len(nrow(mtcars))
split(rownum, (rownum-1) %/% 2)[1:3]
# $`0`
# [1] 1 2
# $`1`
# [1] 3 4
# $`2`
# [1] 5 6
L <- lapply(split(rownum, (rownum-1) %/% 2), function(rn) mtcars[rn,])[1:3]
L
# $`0`
#               mpg cyl disp  hp drat    wt  qsec vs am gear carb
# Mazda RX4      21   6  160 110  3.9 2.620 16.46  0  1    4    4
# Mazda RX4 Wag  21   6  160 110  3.9 2.875 17.02  0  1    4    4
# $`1`
#                 mpg cyl disp  hp drat    wt  qsec vs am gear carb
# Datsun 710     22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
# Hornet 4 Drive 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
# $`2`
#                    mpg cyl disp  hp drat   wt  qsec vs am gear carb
# Hornet Sportabout 18.7   8  360 175 3.15 3.44 17.02  0  0    3    2
# Valiant           18.1   6  225 105 2.76 3.46 20.22  1  0    3    1

一旦有了list,其中每个元素都是原始帧的2行子集,则可能会执行类似的操作

lapply(L, function(x) ...)

...是您希望通话的结果。


0
投票

可能类似这样会有所帮助:

library(Amelia)
result <- lapply(seq(nrow(data) - 1), function(x) mi.meld(data[x,], data[x + 1,]))
© www.soinside.com 2019 - 2024. All rights reserved.