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

如何在保留原DataFrame前提下添加统计指定变量非NA行数的新列

解决方法

方法一:使用dplyr(保留原DataFrame所有列)

不需要用select过滤列,直接用across指定目标变量列,在原DataFrame基础上新增统计列:

df <- df %>%
  mutate(targ_var_count = rowSums(!is.na(across(all_of(targ_vars))), na.rm = TRUE))

方法二:Base R写法(更简洁)

如果不想用dplyr,直接用Base R的rowSums也能实现:

df$targ_var_count <- rowSums(!is.na(df[, targ_vars]), na.rm = TRUE)

为什么你的之前写法有问题?

  • 第一种写法里的select(targ_vars)会把原DataFrame过滤成只保留指定变量,之后赋值给df自然就覆盖了原数据,丢失了其他列。
  • 第二种写法是把包含指定变量和新列的整个DataFrame赋值给df$targcount,这相当于给DataFrame添加了一个列表列,而不是单一的数值列,所以结果不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:50:42