Объединение векторов-строк для кадра данных после использования функции квантиля

Проблема новичка. Я выполнил следующую команду:

CI_95_outcomes_male ‹- data.frame (do.call (cbind, lapply (1: ncol (results_male_dt), function (r) quantile (results_male_dt [, r], c (.95)))))

и получите такой результат:

CI_95_outcomes_мужской X1 X2 X3 X4 95% 9629902039 0 2.968924e + 15 2.968924e + 15

Я хотел бы объединить этот вектор со следующим вектором, чтобы получить матрицу 2X4:

#

mean_outcomes_male

ylg_smoking_simS deaths_averted total_cig total_tax_ 9,62990 0,0000 2,78248 2,782480

Я пытался:

CI_95_outcomes_male ‹-colnames (mean_outcomes_male) data.frame (mean_outcomes_male, CI_95_outcomes_male) Ошибка в data.frame (mean_outcomes_male, CI_95_outcomes_male): аргументы подразумевают разное количество строк: 4, 0

Любое руководство приветствуется, спасибо!


person AS7    schedule 13.03.2018    source источник


Ответы (1)


CI_95_outcomes_male ‹-colnames (mean_outcomes_male)

Я думаю, вы забыли поставить colnames вокруг CI_95_outcomes_male. Но здесь есть еще одна проблема. Я предполагаю, что mean_outcomes_male - вектор, и в этом случае colnames(mean_outcomes_male) равно NULL.

data.frame (mean_outcomes_male, CI_95_outcomes_male)

Даже если CI_95_outcomes_male был правильным, приведенная выше команда приведет к фрейму данных 4x5, где первый столбец будет вектором mean_outcomes_male, второй столбец будет значением CI_95_outcomes_male для вашей первой переменной (повторяется для каждой строки), ... и пятого столбец, являющийся значением CI_95_outcomes_male для вашей четвертой переменной (повторяется для каждой строки).

Вам нужно сделать что-то вроде этого:

set.seed(42)

# Generate a random dataset for outcomes_male_dt with 4 variables and n rows
n <- 100
outcomes_male_dt <- data.frame(x1=runif(n),x2=runif(n),x3=runif(n),x4=runif(n))

# I'm assuming you want the 95th percentile of each variable in outcomes_male_dt and store them in CI_95_outcomes_male
ptl <- .95  # if you want to add other percentiles you can replace this with something like "ptl <- c(.10,.50,.90,.95)" 
CI_95_outcomes_male <- apply(outcomes_male_dt,2,quantile,probs=ptl)

# I'm going to assume that mean_outcomes_male is a vector of means for all the variables in outcomes_male_dt
mean_outcomes_male <- colMeans(outcomes_male_dt)

# You want to end up with a 2x4 matrix - I'm assuming you meant row 1 will be the means, and row 2 will be the 95th percentiles, and the columns will be the variables
want <- rbind(mean_outcomes_male, CI_95_outcomes_male)
colnames(want) <- colnames(outcomes_male_dt)
row.names(want) <- c('Mean',paste0("p",ptl*100)) # paste0("p",ptl*100) is equivalent to paste("p",ptl*100,sep="")
want # Resulting matrix
person obsidian64    schedule 13.03.2018