假设我有多个变量来衡量物质滥用,即a1用于酒精使用,a2用于大麻和a3用于可卡因。我想生成变量afin,如果三个中的任何一个是“是”,则表示从事物质滥用。
有没有一种方法可以缩短代码,以便我不需要指定使用多个
有没有一种方法可以缩短代码,以便我不需要指定使用多个
ifelse
语句,如下所示?试图找到最佳方法,因为我有超过10个要合并成一个,并写ifelse
可能不理想。# Anymatch
library(tidyverse)
set.seed(2021)
mydata <- tibble(
a1 = factor(round(runif(20, 1, 3)),
labels = c("Yes", "No", "N/A")),
a2 = factor(round(runif(20, 1, 3)),
labels = c("Yes", "No", "N/A")),
a3 = factor(round(runif(20, 1, 3)),
labels = c("Yes", "No", "N/A")),
b1 = round(rnorm(20, 10, 2)))
mydata
mydata <- mydata %>%
mutate(afin = ifelse(a1 == "Yes"|a2=="Yes"|a3=="Yes", "Yes", "No"))
starts_with
或ends_with
与cur_data()
。所以我们必须使用select(cur_data(), starts_with('something') )
吗?因为cur_data()[starts_with('something')]
的效果不是预期的吗?太棒了! - AnilGoyal