You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含缺失值判断的SAS条件语句转R代码求助

SAS转R代码:缺失值条件语句转换

原SAS代码

mvpawk=(wmpa)+(wvpa*2); if mvpawk>2520 then mvpawk=2520; /*cap six hours per day*/
mets=mvpawk*3;
if . < mvpawk <150 then meetcdc=0; # Not sure
else if mvpawk >=150 then meetcdc=1;
if nopa in (.,1) and ltpa in (.,2) and mvpawk=0 then sedentary=1; # Not sure
else if nopa=2 or ltpa=1 or mvpawk > 0 then sedentary=0;

已尝试的R代码

lifestyle$mvpawk <- lifestyle$wmpa + (lifestyle$wvpa *2)
lifestyle$mvpawk[which(lifestyle$mvpawk > 2520)] <- 2520
lifestyle$meetcdc <- ifelse(lifestyle$mvpawk < 150, 0,1)

补充缺失的条件转换

1. meetcdc变量的完整转换

SAS中. < mvpawk的作用是判断mvpawk不是缺失值(SAS里缺失值.比任何数值都小,仅非缺失数值能满足该条件)。原逻辑需保留缺失值场景:

  • 非缺失且mvpawk < 150 → meetcdc=0
  • mvpawk >=150 → meetcdc=1
  • mvpawk为缺失值时,meetcdc保持缺失

用base R实现:

lifestyle$meetcdc <- ifelse(is.na(lifestyle$mvpawk), NA, 
                           ifelse(lifestyle$mvpawk < 150, 0, 1))

用dplyr的case_when更直观:

library(dplyr)
lifestyle <- lifestyle %>%
  mutate(meetcdc = case_when(
    is.na(mvpawk) ~ NA_real_,
    mvpawk < 150 ~ 0,
    mvpawk >= 150 ~ 1
  ))

2. sedentary变量的转换

SAS中nopa in (.,1)表示nopa是缺失值或等于1,ltpa in (.,2)表示ltpa是缺失值或等于2。原逻辑:

  • 当nopa(缺失/1)且ltpa(缺失/2)且mvpawk=0 → sedentary=1
  • 当nopa=2 或 ltpa=1 或 mvpawk>0 → sedentary=0
  • 其他场景(如nopa缺失但ltpa既非缺失也非2),sedentary保持缺失

用base R实现:

cond1 <- (is.na(lifestyle$nopa) | lifestyle$nopa == 1) & 
         (is.na(lifestyle$ltpa) | lifestyle$ltpa == 2) & 
         (lifestyle$mvpawk == 0)
cond2 <- (lifestyle$nopa == 2) | (lifestyle$ltpa == 1) | (lifestyle$mvpawk > 0)

lifestyle$sedentary <- ifelse(cond1, 1, 
                              ifelse(cond2, 0, NA))

用dplyr的case_when实现:

lifestyle <- lifestyle %>%
  mutate(sedentary = case_when(
    (is.na(nopa) | nopa == 1) & (is.na(ltpa) | ltpa == 2) & mvpawk == 0 ~ 1,
    nopa == 2 | ltpa == 1 | mvpawk > 0 ~ 0,
    TRUE ~ NA_real_ # 其他情况返回缺失值
  ))

补充mets变量的转换

原SAS中的mets=mvpawk*3可直接在R中添加:

lifestyle$mets <- lifestyle$mvpawk * 3

内容的提问来源于stack exchange,提问作者Achal Neupane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 02:35:19