Я хочу вычислить SD для нескольких столбцов внутри фрейма данных, не покидая моего канала dplyr.В прошлом я делал это по умолчанию на базе r.Я не смог найти решение, которое бы работало здесь.
Это может помочь предоставить некоторый контекст.Это процесс, который я делаю для проверки данных опроса.Мы измеряем sd матричных вопросов для выявления прямых линий.Нд через столбцы помечается прямой линией.В прошлом я рассчитывал это в базе R следующим образом:
apply(x, 1, sd)
Я знаю, что должен быть способ сделать это в трубе dplyr.Я пробовал несколько вариантов, включая pmap и различные подходы в mutate_at.Вот моя последняя попытка:
library(tidyverse)
set.seed(858465)
scale_points <- c(1:5)
q1 <- sample(scale_points, replace = TRUE, size = 100)
q2 <- sample(scale_points, replace = TRUE, size = 100)
q3 <- sample(scale_points, replace = TRUE, size = 100)
digits = 0:9
createRandString<- function() {
v = c(sample(LETTERS, 5, replace = TRUE),
sample(digits, 4, replace = TRUE),
sample(LETTERS, 1, replace = TRUE))
return(paste0(v,collapse = ""))
}
s_data <- tibble::tibble(resp_id = 100)
for(i in c(1:100)) {
s_data[i,1] <- createRandString()
}
s_data <- bind_cols(s_data, q1 = q1, q2 = q2, q3 = q3)
s_data %>% mutate(vars(starts_with("q"), ~sd(.)))
В идеальном мире я бы сохранил переменную resp_id в выходных данных, чтобы я мог сгенерировать отчет, используя фильтр для идентификации идентификаторов респондента с sd == 0.
Любая помощь очень ценится!