У меня есть фрейм данных с результатами опроса. Результаты сохраняются в вертикальном формате. Фрейм данных выглядит так:
set.seed(1000)
df = data.frame(RESP_ID=c(rep(1,6),rep(2,8),rep(3,9),rep(4,5),rep(5,4),rep(6,10),rep(7,4),rep(8,8),rep(9,8),rep(10,10)),
CLIENT=c(rep("A",6),rep("A",8),rep("A",9),rep("A",5),rep("A",4),rep("B",10),rep("B",4),rep("B",8),rep("B",8),rep("B",10)),
QST=c(paste0("Q",c(1:6)),paste0("Q",c(1:8)),paste0("Q",c(1:9)),paste0("Q",c(1:5)),paste0("Q",c(1:4)),paste0("Q",c(1:10)),paste0("Q",c(1:4)),paste0("Q",c(1:8)),paste0("Q",c(1:8)),paste0("Q",c(1:10))),
VALUE=round(runif(72,1,4),0))
Описание кадра данных
RESP_ID = идентификатор респондента. Каждый идентификатор соответствует одному респонденту. В этом выборочном фрейме данных у нас есть 10 респондентов.
КЛИЕНТ = Соответствует имени клиента, чьи респонденты были опрошены. В этом примере фрейма данных у нас есть два клиента (A и B).
QST = соответствует номеру вопроса в опросе.
ЗНАЧЕНИЕ = соответствует варианту ответа на вопрос. Все вопросы имеют 4 варианта ответа (от 1 до 4).
Цель
Для каждой комбинации клиента и вопроса я хотел бы создать отдельный столбец, в котором будет храниться коэффициент регрессии для этого вопроса, регрессированного до Q2, в столбце QST
.
Таким образом, в модели регрессии Q2
является зависимой переменной, а все остальные вопросы являются независимыми переменными.
Моя попытка
Моя попытка не дает мне желаемого результата.
slopesdf = df %>%
spread(QST, VALUE, fill = 0) %>%
group_by(CLIENT) %>%
mutate(COEFFICIENT=lm(Q2 ~ .))
Я пытаюсь сначала сгруппировать по CLIENT
и QST
, а затем найти наклоны для каждого вопроса, регрессированного с помощью Q2. Я уверен, что есть лучший способ сделать это.
В настоящее время моя попытка дает мне следующее сообщение об ошибке:
Ошибка в mutate_impl(.data, dots): Ошибка оценки: '.' по формуле и аргументу «данные»
Желаемый результат
Я хотел бы, чтобы окончательный фрейм данных содержал три столбца: один для CLIENT
, один для QST
и третий, называемый COEFFICIENT
, с коэффициентами для каждой комбинации CLIENT и QST, регрессировавшими с Q2 в качестве переменной ответа.
Любая помощь по этому вопросу будет принята с благодарностью.
lm
непосредственно в разделенных кадрах данных, это выходные значения для каждого Q - я добавлю к своему ответу, чтобы продемонстрировать 10.05.2019