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

R语言实现自定义NA求和规则:仅两NA相加返回NA的列两两求和方法

R自定义NA规则的两两列求和实现

核心逻辑

你需要的求和规则本质是:仅当配对的两个元素均为NA时返回NA,其余场景将NA替换为0后求和即可匹配要求。

基础R实现代码

你可以直接用mapply配对列调用自定义求和函数,代码如下:

# 提取奇数/偶数列
odd_df <- M[c(TRUE, FALSE)]
even_df <- M[c(FALSE, TRUE)]

# 自定义符合规则的逐元素求和函数
pair_sum <- function(a, b) {
  ifelse(is.na(a) & is.na(b), NA, replace(a, is.na(a), 0) + replace(b, is.na(b), 0))
}

# 逐列配对计算
M_final <- as.data.frame(mapply(pair_sum, odd_df, even_df))
# 保留原奇数列的列名
colnames(M_final) <- colnames(odd_df)

如果你使用R4.1及以上版本,可以简化为一行代码:

M_final <- as.data.frame(mapply(\(x,y) ifelse(is.na(x)&is.na(y),NA,replace(x,is.na(x),0)+replace(y,is.na(y),0)), M[c(T,F)], M[c(F,T)]))

输出结果

运行上述代码后输出的M_final和你给出的预期结果完全一致:

V1 V3 V5 V7 V9
1   0  1  2  1  1
2   1  1  1  2  1
3   0  0  1  1  1
4   0  1  2  1  1
5   1  0  1  1  0
6   1  0  1  2  1
7   1  2  2  2  0
8   1  0  2  0  1
9   2  1  1  1  1
10  1  2 NA  2  1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:54:04