Есть ли способ создать новый столбец, основанный на значениях другого, используя dplyr в R? - PullRequest
2 голосов
/ 19 января 2020

Я использовал базу R, но я хочу использовать dplyr. Вот что я делал:

data$newvariable <- 0
data$newvariable[data$oldvariable=="happy"] <- "good"
data$newvariable[data$oldvariable=="unhappy"] <- "bad"
data$newvariable[data$oldvariable=="depressed"] <- "super_bad"

Ответы [ 2 ]

1 голос
/ 19 января 2020

Если oldvariable является фактором, и вы не против, что newvariable равен единице:

library(dplyr)

set.seed(111)
data = data.frame(
oldvariable=sample(c("happy","unhappy","depressed"),10,replace=TRUE))

data %>% mutate(newvariable=recode_factor(oldvariable,
"happy"="good","unhappy"="bad","depressed"="super_bad"))


   oldvariable newvariable
1      unhappy         bad
2    depressed   super_bad
3    depressed   super_bad
4    depressed   super_bad
5        happy        good
6    depressed   super_bad
7        happy        good
8    depressed   super_bad
9      unhappy         bad
10       happy        good
0 голосов
/ 19 января 2020

В dplyr мы можем использовать case_when для назначения новых значений для newvariable на основе oldvariable.

library(dplyr)

data = data.frame(
  oldvariable = c("happy", "unhappy", "depressed")
)

data %>%
  mutate(newvariable = case_when(
    oldvariable == "happy" ~ "good",
    oldvariable == "unhappy" ~ "bad",
    oldvariable == "depressed" ~ "super_bad"
  ))
#>   oldvariable newvariable
#> 1       happy        good
#> 2     unhappy         bad
#> 3   depressed   super_bad
.
...