#r #excel #dplyr
#r #excel #dplyr
Вопрос:
Я использую R mutate для обновления определенной (условной) строки с помощью вычисляемой функции, nrow()
а именно, для обновления с добавлением ( ) значения. Я не могу использовать apply()
, поскольку мне нужно обновить только одну (1) строку для определенного значения.
Например, при поиске строки Year == 2007 и Month == 06 добавьте входящие.Exam nrow(df3), так что строка будет иметь значение 698 nrow.
Я получаю следующую ошибку от mutate impl:
Ошибка в mutate_impl(.data, точки): столбец
abberville_LA
должен иметь длину 96 (количество строк) или один, а не 4
abberville_LA %>%
mutate(abberville_LA, Incoming.Exam = ifelse(abberville_LA$Year == 2007 amp; abberville_LA$Month == 06, abberville_LA, Incoming.Exam nrow(abberville_df3), abberville_LA$Incoming.Exam))
head(abberville_LA, 3)
Incoming.Exam Year Month ts_date
1 698 2007 6 2007-06-01
2 NaN 2010 6 2010-06-01
Комментарии:
1. Не используйте
$
внутриmutate
.2. другими словами, просто используйте имя поля, например, Год, месяц
3. Я все еще получаю: Ошибка в mutate_impl (.data, dots): столбец
abberville_LA
должен быть длиной 96 (количество строк) или один, а не 44. abberville_LA %>% мутировать(abberville_LA, входящий. Экзамен = ifelse(Год == 2007 и месяц == 05, поступающий. Экзамен nrow(abberville_df3), Входящий.Экзамен))
5. У нас нет ваших данных, чтобы точно сказать, что происходит, но если вы объединяетесь в цепочку
abberville_LA %>% ...
, вам не нужно снова добавлятьabberville_LA
вmutate
качестве первого аргумента.
Ответ №1:
1 . Ваш вопрос неясен , поэтому я пытаюсь понять , чего вы хотите , и отвечаю на вопрос
2 .Вы используете $ in mutate , который не является обязательным . Выполнение приведенного ниже кода должно решить проблему .
abberville_LA %>%
mutate(Incoming.Exam = ifelse(Year == '2007' amp; Month == '06', Incoming.Exam nrow(abberville_df3),Incoming.Exam))
Комментарии:
1. этот точный код возвращает эту ошибку: Ошибка в mutate_impl(.data, dots): Ошибка оценки:
as_dictionary()
не существует с версии rlang 0.3.0. Пожалуйста, используйтеas_data_pronoun()
вместо этого.2. можете ли вы однажды попробовать заменить «mutate» на «dplyr::mutate»
3. ваш код соответствует тому, что я также решил сделать, основываясь на предыдущих рекомендациях здесь, но ошибка для as_dictionary() amp; as_data_pronoun() все еще материализуется. Что или как использовать as_data_pronoun() для переопределения этой ошибки?
4. Хорошо, я попробовал «dplyr::mutate —> dplyr::mutate(abberville_LA $Incoming. Экзамен = ifelse (год == 2007 и месяц == 06, abberville_LA $ Входящий. Экзамен nrow(df3), abberville_LA$Incoming.Exam)) <— Ошибка: неиспользованный ‘=’ в dplyr::mutate, первый аргумент…
5. Пожалуйста, скопируйте и вставьте точный код: abberville_LA %>% dplyr::mutate(входящий. Экзамен = ifelse (год == «2007» и месяц == «06», входящий. Экзамен nrow(abberville_df3), входящий.Экзамен))
Ответ №2:
проблема заключалась в библиотеке dplyr. Я обнаружил, что у меня была немного более старая версия, и мне нужно было обновить, чтобы устранить «Ошибку в mutate_impl(.data, dots): ошибка оценки: as_dictionary() не функционирует с версии rlang 0.3.0. Пожалуйста, используйте вместо этого as_data_pronoun()» сообщение об ошибке, в котором указывалось, что следует использовать другую версию dplyr. Это исправило код, который был предоставлен в качестве ответов на этом форуме.