跨多个数据框的平均行和列

时间:2019-10-06 16:05:57

标签: r

R的新手,学习该语言的细微差别。我在启动时具有以下功能:

1.0

打印“ q”给出以下示例输出:

boot_fxn <- function (x, y){
x <- replicate(10000, mydata[sample(1:nrow(mydata), replace=T),], 
simplify=F) # number of bootstraps
y <- mvar_fxn # function to iterate over bootstrap samples
z <- data.frame(sapply(x, y)) #output of function
output <- t(z) #transpose the output
}

q <- boot_fxn(rep_data, mvar_fxn) # the function saved as an R object

第1列:销售代表索引

第2列:存储7个预测变量名称的地方

第3列到第5列:存储了7个预测变量的系数以表示结果(w1到w3)

我可以使用以下代码查看每个复制样本的存储数据或(内容):

index   vars        w.1         w.2         w.3
X1      factor,7    Numeric,7   Numeric,7   Numeric,7
X2      factor,7    Numeric,7   Numeric,7   Numeric,7
X3      factor,7    Numeric,7   Numeric,7   Numeric,7
X4      factor,7    Numeric,7   Numeric,7   Numeric,7
X5      factor,7    Numeric,7   Numeric,7   Numeric,7

我想做的是以下

(a)找出所有代表每个结果的每个结果的每个变量的平均系数

将如下所示:

data.frame(q[1, ]) # for the first indexed sample  

vars    w.1     w.2     w.3
V7      0.095   0.019   0.076
V10     0.054   0.022   0.096
V8      0.054   0.066   0.044
V5      0.032   0.088   0.039
V4      0.08    0.018   0.058
V9      0.021   0.103   0.022
V6      0.022   0.086   0.021

data.frame(q[2, ]) # for the second indexed sample, etc  

vars    w.1     w.2     w.3
V7      0.091   0.019   0.086
V10     0.051   0.022   0.098
V8      0.053   0.068   0.043
V4      0.08    0.017   0.059
V9      0.021   0.105   0.022
V5      0.03    0.073   0.042
V6      0.023   0.071   0.025

(b)围绕这些估计值的置信区间的表。

vars    w.1     w.2     w.3
V7      0.093   0.019   0.081
V10     0.053   0.022   0.097
V8      0.054   0.067   0.044
V4      0.056   0.053   0.049
V9      0.051   0.062   0.040
V5      0.026   0.088   0.032
V6      0.023   0.079   0.023

我正在尝试找到一种有效的方法来进行上述操作。

1 个答案:

答案 0 :(得分:0)

这将不列出您的矩阵列表,并将其转换为数组。

set.seed(2)
mat <- matrix(replicate(4, sample(4), simplify = F), ncol = 2)
mat
#>      [,1]      [,2]     
#> [1,] Integer,4 Integer,4
#> [2,] Integer,4 Integer,4
my_arr <- array(unlist(mat), dim = c(4, nrow(mat), ncol(mat)))
apply(my_arr, 3, rowMeans)
#>      [,1] [,2]
#> [1,]  2.5  3.5
#> [2,]  2.0  1.0
#> [3,]  2.5  3.5
#> [4,]  3.0  2.0

reprex package(v0.3.0)于2019-10-06创建

对于问题(b),您应该开始一个新问题,或者至少创建一个具有预期输出的可复制示例。