В качестве предыстории, данные, с которыми я работаю, относятся к ранжированию 3 лучших переменных. Мне нужно иметь возможность подсчитать 1 с, 2 с, 3 с и NA (# чел, которые не включили его в топ 3).
У меня есть фрейм данных LikelyRenew_ReasonB, и я использовал dplyr для фильтрации по определенному году и статусу, который работает правильно / без ошибок.
LikelyRenew_ReasonB <-
LikelyRenew_Reason %>%
filter(year ==1, status ==2)
> LikelyRenew_ReasonB
cost products commun reimburse policy discount status year
1 NA NA NA NA NA NA 2 1
2 NA NA 1 2 NA NA 2 1
3 2 NA 3 NA 1 NA 2 1
4 NA NA NA 1 NA NA 2 1
5 NA NA 3 1 2 NA 2 1
6 NA NA 2 1 3 NA 2 1
7 NA NA 1 NA NA NA 2 1
8 NA 2 3 1 NA NA 2 1
9 3 NA 1 NA 2 NA 2 1
Однако, когда я пытаюсь получить итоговые значения, выдается сообщение об ошибке: Ошибка: длина (строки) == 1 не соответствует значению «R.» до года == 3, статус == 1, то работает нормально. Есть идеи о том, что мне здесь не хватает?
LikelyRenew_ReasonB %>%
summarize(
costC = count(cost),
productsC = count(products),
communC = count(commun),
reimburseC = count(reimburse),
policyC = count(policy),
discountC = count(discount))
Вот как выглядит LikelyRenew_ReasonB (* обратите внимание, что это заголовок dput, следующий, когда у меня год == 3, состояние == 1 в качестве фильтра)
> dput(head(LikelyRenew_ReasonB))
structure(list(costC = structure(list(x = c(1, 2, 3, NA), freq = c(10L,
11L, 17L, 149L)), .Names = c("x", "freq"), row.names = c(NA,
4L), class = "data.frame"), productsC = structure(list(x = c(1,
2, 3, NA), freq = c(31L, 40L, 30L, 86L)), .Names = c("x", "freq"
), row.names = c(NA, 4L), class = "data.frame"), communC = structure(list(
x = c(1, 2, 3, NA), freq = c(51L, 50L, 34L, 52L)), .Names = c("x",
"freq"), row.names = c(NA, 4L), class = "data.frame"), reimburseC =
structure(list(
x = c(1, 2, 3, NA), freq = c(42L, 26L, 25L, 94L)), .Names = c("x",
"freq"), row.names = c(NA, 4L), class = "data.frame"), policyC =
structure(list(
x = c(1, 2, 3, NA), freq = c(31L, 25L, 28L, 103L)), .Names = c("x",
"freq"), row.names = c(NA, 4L), class = "data.frame"), discountC =
structure(list(
x = c(1, 2, 3, NA), freq = c(2L, 2L, 3L, 180L)), .Names = c("x",
"freq"), row.names = c(NA, 4L), class = "data.frame")), .Names = c("costC",
"productsC", "communC", "reimburseC", "policyC", "discountC"), row.names =
c(NA,
4L), class = "data.frame")
Вот пример того, как он «работает». Опять же, проблема в том, что по какой-то причине я получаю ошибку, когда меняю статус / год на другой интересующий сегмент.
> LikelyRenew_ReasonB <-
+ LikelyRenew_Reason %>%
+ dplyr::filter(year ==3, status ==1) %>%
+ plyr::summarize(
+ costC = count(cost),
+ productsC = count(products),
+ communC = count(commun),
+ reimburseC = count(reimburse),
+ policyC = count(policy),
+ discountC = count(discount))
Вот пример правильного вывода
> LikelyRenew_ReasonB
costC.x costC.freq productsC.x productsC.freq
1 1 10 1 31
2 2 11 2 40
3 3 17 3 30
4 NA 149 NA 86