R dplyr mutate условный, когда_каталог не обновляет фрейм данных - PullRequest
0 голосов
/ 04 апреля 2019

Я использую R dplyr::mutate для условного изменения значения переменной фрейма данных.Прогноз df_forecast получается из входного файла CSV с использованием stringsAsFactors=F.

Атрибут переменной Acres представляет собой строку, которая впоследствии будет приведена к коэффициенту, который содержит '10 -Jan '(1/10 /2019).Я пытаюсь изменить значение Acres '10 -Jan 'до' 1 до 10 ', но изменение не вносит никаких изменений во фрейм данных.

Эта проблема с обновлением при сбое описана во втором примере кода для YearBuilt ниже: попытка очистить / изменить «15» на «2015».

Я использую R Studio (3.5).

Исследовано усилие dplyr:

Я пробовал равное назначение

'mutate (df_forecast $ Acres = case_when ...', что привело к этой ошибке msg:'Ошибка: неожиданно' = 'в: "df_forecast%>% mutate (df_forecast $ Acres ="'

Я пытался '==' изменить '(df_forecast $ Acres == case_when ...'которое привело к' data.frame ': 22745 объектов из 19 переменных

df_forecast <- data.frame(forecast)
df_forecast %>% 
  mutate(df_forecast$Acres == case_when(df_forecast$Acres == "10-Jan" ~ "1 to 10")) %>% 
##
str(df_forecast)

df_forecast %>% 
  mutate(df_forecast$YearBuilt == case_when(df_forecast$YearBuilt == "15" ~ "2015")) %>% 
##
str(df_forecast)

1 Ответ

1 голос
/ 04 апреля 2019

Вам не нужно писать df_forecast$Acres просто Acres и указывать, что должно произойти, если не выполняется ни одно из условий.

data <- data.frame(Acres = c("10-Jan", "10-Jan", "anytime", "10-Jan", "10-Jan", "anytime"),
                   stringsAsFactors = FALSE) 

> data
    Acres
1  10-Jan
2  10-Jan
3 anytime
4  10-Jan
5  10-Jan
6 anytim


data %>% 
  mutate(Acres = case_when(Acres == "10-Jan" ~ "1 to 10",
                           TRUE ~ Acres)) -> data

> data
    Acres
1 1 to 10
2 1 to 10
3 anytime
4 1 to 10
5 1 to 10
6 anytime

Я только что присвоил содержимое Acres обратно Acres, когда Acres != "10-Jan", но это может быть что угодно.

ОБНОВЛЕНИЕ: чтобы сделать изменения постоянными, у вас также естьчтобы присвоить результат вашему data.frame.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...