R изменить ifelse обновить условную строку с вычисленным значением функции

#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 (количество строк) или один, а не 4

4. 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. Это исправило код, который был предоставлен в качестве ответов на этом форуме.