[英]Is there a way to create a new column based on the values of another one using dplyr in R?
I have been using base R but I want to use dplyr
.我一直在使用基础 R 但我想使用
dplyr
。 This is what I have been doing:这就是我一直在做的事情:
data$newvariable <- 0
data$newvariable[data$oldvariable=="happy"] <- "good"
data$newvariable[data$oldvariable=="unhappy"] <- "bad"
data$newvariable[data$oldvariable=="depressed"] <- "super_bad"
If oldvariable is a factor, and you don't mind newvariable being one:如果 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
In dplyr
, we can use case_when
to assign new values to newvariable
based on oldvariable
.在
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.