我的数据中有此列:
table(data$year)
2011 2012 2013 2014 2015 2016 2017 2018 2019
2 28 17 36 26 29 37 33 10
is.numeric(data$year)
[1] TRUE
我想使用以下代码对 case_when 进行变异:
data <- data %>%
mutate(periode_2a = case_when(
year >= 2011 && year <= 2013 ~ "2011-2013",
year >= 2014 && year <= 2015 ~ "2014-2015",
year >= 2016 && year <= 2017 ~ "2013-2017",
TRUE ~ "2018-2019"
))
我认为这是显而易见的:我想对年份进行分类。
我了解到:
table(data$periode_2a)
2011-2013
218
我尝试过其他风格:
> data <- data %>%
+ mutate(periode_2a = case_when(
+ year == 2011:2013 ~ "2011-2013",
+ year == 2014:2015 ~ "2014-2015",
+ year == 2016:2017 ~ "2013-2017",
+ TRUE ~ "2018-2019"
+ ))
或
> data <- data %>%
+ mutate(periode_2a = case_when(
+ year == "2011"|"2012"|"2013" ~ "2011-2013",
+ year == "2014"|"2015" ~ "2014-2015",
+ year == "2016"|"2017" ~ "2013-2017",
+ TRUE ~ "2018-2019"
+ ))
没有成功...
我做错了什么?
感谢大家
最佳答案
我们可以使用 %in%
来表示长度大于 1 的向量
library(dplyr)
data %>%
mutate(periode_2a = case_when(
year %in% 2011:2013 ~ "2011-2013",
year %in% 2014:2015 ~ "2014-2015",
year %in% 2016:2017 ~ "2013-2017",
TRUE ~ "2018-2019"
))
==
对于按元素操作非常有用,即如果两个对象的长度在运算符中的长度相同(或者如果 rhs 的长度为 1 - 它会被回收)。当有多个元素时,一旦达到向量的长度,逐元素比较的回收就会重置。关于&&
的使用,它返回单个TRUE/FALSE
输出
关于r - 将 case_when i r dplyr 与 OR 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63512910/