#r #loops #dplyr
#r #циклы #dplyr
Вопрос:
Я пытаюсь запустить код, предоставленный Американским бюро статистики труда, который размещен по этой ссылке:https://www.bls.gov/cex/pumd-getting-started-guide.htm#section5
Код является:
# Generate a calendar-year population weight variable
popwt = ifelse(
qintrvmo %in% 1:3 amp; qintrvyr %in% year,
(qintrvmo - 1) / 3 * finlwt21 / 4,
ifelse(
qintrvyr %in% (year 1),
(4 - qintrvmo) / 3 *finlwt21 / 4,
finlwt21 / 4
)
)
) %>%
select(-c(qintrvyr, qintrvmo))
mean_exp <- left_join(fmli, mtbi, by = "newid") %>%
mutate(cost = replace(cost, is.na(cost), 0)) %>%
summarise(mean_exp = sum(cost * finlwt21) / sum(popwt)) %>%
unlist`
Но при его запуске я получаю ошибку:
Ошибка в UseMethod(«select_»): нет применимого метода для ‘select_’, применяемого к объекту обратной трассировки класса «logical»:
- ifelse(newdataQ1$ QINTRVYR %в% 1:3 и newdataQ1$QINTRVYR %в% . 2017, (newdataQ1$ QINTRVMO — 1)/3 * newdataQ1$ FINLWT21/4, . ifelse(newdataQ1$ QINTRVYR %в% (2017 1), (4 — newdataQ1$QINTRVMO)/3 * . newdataQ1$FINLWT21/4, newdataQ1$FINLWT21/4)) %>% выбрать(-c(newdataQ1$QINTRVYR, . newdataQ1$QINTRVMO))
- С помощью visible(eval(quote(
_fseq
(_lhs
)), env, env)) - оценка(цитата(
_fseq
(_lhs
)), env, env) - оценка(цитата(
_fseq
(_lhs
)), env, env) _fseq
(_lhs
)- freduce(значение,
_function_list
) - С видимым(function_list[k])
- function_list[k]
- выберите(., -c(newdataQ1$QINTRVYR, newdataQ1$QINTRVMO))
- выберите.default(., -c(newdataQ1$QINTRVYR, newdataQ1$QINTRVMO))
- select_(.data, .dots = compat_as_lazy_dots(…))
Кто-нибудь знает, как действовать дальше?
Для контекстуализации я использую CES для расчета общих расходов домохозяйств в течение 2017 года. Опросы включают расходы за 3 месяца, поэтому те, которые были сделаны до марта 2017 года, по-прежнему включают 2 месяца с 2016 года. Поэтому я должен уменьшить вес этих домохозяйств.
dput(head(newdataQ1))
является:
structure(list(NEWID = c("3386764", "3386774", "3386804", "3386874",
"3386884", "3386894"), AGE_REF = c(46L, 65L, 26L, 58L, 74L, 21L),
CUTENURE = c(4L, 4L, 4L, 1L, 2L, 4L), EDUC_REF = c(15L, 14L, 13L, 12L, 12L, 11L),
FAM_SIZE = c(1L, 1L, 3L, 1L, 2L, 2L), FINCBTAX = c(100000L, 27917L, 65000L, 450L, 30996L, 0L),
FINLWT21 = c(15077.66, 19601.516, 22010.799, 7653.231, 22947.961, 25143.718),
FSALARYX = c(100000L, 16000L, 65000L, 0L, 0L, 0L),
INC_HRS1 = c(50L, 25L, 40L, NA,NA, 40L),
INC_HRS2 = c(NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_),
INC_RANK = c(0.7957279, 0.3869005, 0.6512021, 0.1028364, 0.416531, 0.0952528),
INCWEEK1 = c(52L, 52L, 52L, 0L, 0L, 52L),
INCWEEK2 = c(NA, NA, NA, NA, 0L, NA),
NUM_AUTO = c(2L, 1L, 0L, 0L, 0L, 1L),
POPSIZE = c(2L, 3L, 1L, 3L, 2L, 1L),
QINTRVMO = c(1, 1, 1, 1, 1, 1),
QINTRVYR = c(2017L, 2017L, 2017L, 2017L, 2017L, 2017L),
REF_RACE = c(1L, 2L, 2L, 6L, 1L, 2L),
REGION = c(3L, 2L, 1L, 4L, 2L, 3L),
TOTEXPPQ = c(27688.0501, 4891.4, 10513.2501, 11577, 17383.8, 10190.9999),
TOTEXPCQ = c(0, 0, 0, 0, 0, 0),
FDHOMEPQ = c(1710, 260, 1599, 1040, 2080, 1040),
FDAWAYPQ = c(50, 130, 260, 650, 0, 0),
ALCBEVPQ = c(260, 0, 90, 0, 0, 0),
OWNDWEPQ = c(0, 0, 0, 7067, 1144, 0),
RENDWEPQ = c(1510, 1689, 3300, 0, 0, 5100),
OTHLODPQ = c(80, 0, 0, 0, 0, 0),
UTILPQ = c(1331, 465, 996, 1680, 1166, 935),
HOUSOPPQ = c(171, 183, 294, 135, 654, 81),
MISCEQPQ = c(140, 0, 0, 0, 0, 0),
APPARPQ = c(170, 92, 75, 0, 100, 160),
OTHVEHPQ = c(0, 0, 0, 0, 0, 0),
GASMOPQ = c(495, 240, 0, 390, 120, 360),
TRNOTHPQ = c(0, 0, 290, 0, 0, 0),
HEALTHPQ = c(570, 683.4, 475, 0, 2481.8, 423), E
ENTERTPQ = c(225, 70, 550, 240, 0, 144),
PERSCAPQ = c(60, 50, 90, 0, 160, 0),
READPQ = c(10, 0, 0, 0, 0, 0),
EDUCAPQ = c(3800, 0, 0, 0, 0, 31),
TOBACCPQ = c(0, 0, 0, 0, 0, 0),
INCLASS = c(9L, 5L, 8L, 1L, 6L, 9L),
STATE = c(21L, 39L, 36L, 15L, 39L, 12L ),
EVEHPURP = c(0, 801, 0, 0, 972, 0),
CUID = c(338676L, 338677L, 338680L, 338687L, 338688L, 338689L)),
row.names = c(NA, 6L), class = "data.frame")
Спасибо!
Комментарии:
1. Было бы проще помочь, если бы вы могли предоставить образец кода с помощью
dput(head(df))
. Вы пробовали заменитьselect
наdplyr::select
?2. @Matt только что обновил выборку. что касается dplyr::select, это не работает