R语言将“变量da059=1或变量da061=1”的创建为smoking=Smoker;将“变量da059=2或缺失,且变量da061=2”的创建为smoking=Ex-smoker;将“变量da059=2或缺失,且变量da061=3”的创建为smoking=Non-smoker
时间: 2024-09-12 22:07:10 浏览: 41
在R语言中,根据您给出的条件创建新的变量`smoking`,可以使用`ifelse`函数或`dplyr`包中的`case_when`函数来实现。这里给出使用`ifelse`函数和`dplyr`包两种方法的示例代码。
### 使用`ifelse`函数
```R
# 假设da059和da061是已经存在的变量
# 首先判断da059是否为1
smoking <- ifelse(da059 == 1, "Smoker",
# 如果不是1,则判断da059是否缺失且da061是否为2
ifelse(is.na(da059) & da061 == 2, "Ex-smoker",
# 如果前面的条件都不满足,则判断da059是否缺失且da061是否为3
ifelse(is.na(da059) & da061 == 3, "Non-smoker", NA)))
```
### 使用`dplyr`包的`case_when`函数
```R
library(dplyr)
# 假设da059和da061是已经存在的变量
# 创建新的变量smoking
df <- df %>%
mutate(smoking = case_when(
da059 == 1 ~ "Smoker",
is.na(da059) & da061 == 2 ~ "Ex-smoker",
is.na(da059) & da061 == 3 ~ "Non-smoker",
TRUE ~ NA_character_ # 其他情况可以保持NA或其他默认值
))
```
注意:在使用`ifelse`时,需要特别注意逻辑判断的顺序,因为`ifelse`是从上到下依次判断的。如果条件有重叠,先出现的条件会优先被判断。而在`case_when`中,则可以任意指定条件的顺序。
阅读全文