средние строки и столбцы в нескольких фреймах данных - PullRequest
1 голос
/ 06 октября 2019

новичок в R и изучение нюансов языка. У меня есть следующая функция для начальной загрузки:

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

print "q" дает пример выходных данных ниже:

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

столбец 1: индекс повторений

столбец2: где хранятся 7 имен переменных предикторов

столбцы с 3 по 5: где хранятся коэффициенты для каждого из 7 предикторов для результата (от w1 до w3)

Я могу использовать следующеекод для просмотра сохраненных данных или (содержимого) каждого реплицированного образца:

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

я хочу иметь возможность сделать следующее:

(a) найти среднее значение коэффи- циента для каждогопеременная для каждого результата для всех повторений, мой желаемый результат

будет выглядеть следующим образом:

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

(b) таблица доверительного интервала вокруг этих оценок.

vars    w.1LCL  w.1UCL  w.2LCL  w.2UCL  w3.LCL   w3.UCL
V4      0.093   0.119   0.081   0.112   0.093    0.119
V5      0.053   0.072   0.097   0.115   0.053    0.072
V6      0.054   0.067   0.044   0.078   0.054    0.067
V7      0.052   0.056   0.049   0.076   0.052    0.056
V8      0.051   0.062   0.040   0.082   0.051    0.062
V9      0.026   0.045   0.032   0.058   0.026    0.045
V10     0.023   0.048   0.023   0.045   0.023    0.048

Я пытаюсь найти эффективный способ сделать вышеупомянутое.

1 Ответ

0 голосов
/ 07 октября 2019

Это выведет список вашего списка матрицы и преобразует его в массив.

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

Создано в 2019-10-06 пакетом представ. (v0.3.0)

Для вопроса (b) выследует начать новый вопрос или, по крайней мере, создать воспроизводимый пример с ожидаемым результатом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...