dplyr mutate заменяет значения одного столбца как ifelse - PullRequest
1 голос
/ 05 марта 2020

Цель:

У меня есть набор данных, который содержит много данных обработки ссуд (набор данных: df). Мне нужно изменить строку символов на цифры c данные в поле «статус». Цель состоит в том, чтобы изменить текстовое повествование на числовое значение c. Я sh хочу использовать это состояние в качестве переменной ответа в методе lm ().

Вот что было сделано:

df$status <- df$status %>% 
  mutate(status = str_replace("Charged On", "100"))
df$status <- df$status %>% 
  mutate(status = str_replace("Charged Off", "200"))
df$status <- df$status %>% 
  mutate(status = str_replace("Fully Paid", "300"))
df$status <- df$status %>% 
  mutate(status = str_replace("Current", "400"))
df$status <- df$status %>% 
  mutate(status = str_replace("In Grace Period", "500"))

Ответы [ 2 ]

4 голосов
/ 05 марта 2020

Я бы предложил использовать case_when здесь, чтобы сгенерировать новую цифру c столбец:

df$status <- case_when(
    df$status == "Charged On" ~ 100,
    df$status == "Charged Off" ~ 200,
    df$status == "Fully Paid" ~ 300,
    df$status == "Current" ~ 400,
    df$status == "In Grace Period" ~ 500,
    TRUE ~ -1
)
2 голосов
/ 05 марта 2020

Если ваш столбец «Статус» имеет факторный формат, вы можете просто напрямую изменить уровень фактора. Вот фиктивный пример, имитирующий ваш фрейм данных:

df <- data.frame(status = rep(c("Charged On","Charged Off","Fully Paid","Current","Grace Period"),10))

        status
1   Charged On
2  Charged Off
3   Fully Paid
4      Current
5 Grace Period
6   Charged On
...        ...  

Мы можем проверить, что это формат фактора:

> str(df)
'data.frame':   50 obs. of  1 variable:
 $ status: Factor w/ 5 levels "Charged Off",..: 2 1 4 3 5 2 1 4 3 5 ...

> levels(df$status)
[1] "Charged Off"  "Charged On"   "Current"      "Fully Paid"   "Grace Period"

Теперь вы можете изменять уровни каждого фактора, назначая новое соответствующее значение на основе на уровне уровней факторов. Новое значение будет заменено по всему столбцу и, наконец, преобразовано в числовой формат c:

levels(df$status) <- c(200,100,400,300,500)
df$status <- as.numeric(as.character(df$status))

>   head(df)                 
  status
1    100
2    200
3    300
4    400
5    500
6    100

Если ваши столбцы не являются форматом фактора, вы можете преобразовать его в фактор, выполнив:

df$status <- as.factor(df$status)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...