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

如何高效将指定变量的-9替换为NA并计算有效条目总数

批量处理MED变量并统计有效条目数

问题说明

需将数据集2007d中MED1至MED8列的-9视为空值,同时生成新变量Totalmeds统计每行的有效条目(非-9)数量。


方法一:先批量替换空值再统计

如果需要保留替换后的数据集,使用dplyr的across函数(适配dplyr 1.0.0+版本,替代旧版的mutate_at):

library(dplyr)

# 批量将所有MED开头列的-9替换为NA
`2007d` <- `2007d` %>%
  mutate(across(starts_with("MED"), ~na_if(., -9)))

# 统计每行MED列的非NA数量,生成Totalmeds
`2007d` <- `2007d` %>%
  mutate(Totalmeds = rowSums(!is.na(select(., starts_with("MED")))))

方法二:不替换直接统计(更高效)

若无需修改原数据,直接统计每行中不等于-9的条目数:

library(dplyr)

`2007d` <- `2007d` %>%
  mutate(Totalmeds = rowSums(select(., starts_with("MED")) != -9, na.rm = TRUE))

旧代码失效原因说明

之前的mutate_at未生效,大概率是因为dplyr版本过低——新版本已弃用mutate_at这类函数,推荐使用across;另外需确认变量名确实以MED开头,无大小写或拼写错误。

内容的提问来源于stack exchange,提问作者lipin lukose

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:22:49