Я снова здесь, чтобы попросить коллег помочь мне улучшить этот код. Поскольку этот форум настолько восприимчив, я хотел бы услышать ваши мысли об этой ситуации!
Вопрос довольно прост, но требует знаний о looping / for () / by () и т. Д., И я почти автоматически отключаюсь при программировании на R:
Я работаю над набором данных, в котором у меня есть оценки для proprtions , и я хочу вычислить нижние и верхние границы для доверительного интервала. Работа состоит из преобразования этого:
к этому:
Есть пакет, который вычисляет это для меня
библиотека (PropCIs)
Решение было интуитивно понятным (для меня) .
1) Получите оценку каждой точки,
2) вычислить его нижнюю и верхнюю границы и
3) перейти к следующему ряду и
4) Вернитесь к первому шагу.
Мой обходной путь основан на этом посте здесь и описан ниже шаг за шагом. Тем не менее, я полагаю, что это решение слишком медленное, наивное или работает так, как будто я говорю со странным акцентом для любого нативного ученого. Тогда мне интересно, может ли tidyverse помочь мне улучшить это.
library(PropCIs)
library(tidyverse)
set.seed(123)
ds <- data.frame(estimate = runif(15, min=0, max=1),
sample = sample(x = 10:15, 15, replace = T))
ds <- ds %>% mutate(lower = '')
#looping
for(i in 1:nrow(ds)) {
ds$lower[i] <- blakerci(ds$sample[i], 3449, conf.level=0.95)
}
#row to columns
ds <- separate(data = ds, col = lower, into = c("lower", "upper"), sep = ",")
#replace strings
ds <- ds %>% mutate(lower = gsub("c(", "", lower, fixed = TRUE),
upper = gsub(")", "", upper, fixed = TRUE))
#Transform to numeric
ds <- ds %>% mutate_at(vars(lower, upper), funs(as.numeric(.)))
Как всегда, большое спасибо за поддержку!
Пожалуйста, примите во внимание, что этот пост имеет воспроизводимый скрипт и может помочь другим людям! =) * 1 047 *