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

如何在DataFrame中新增列:仅当两列值均为1时取1,否则取0

解决方案

针对你的需求,有几种简单直接的方法可以实现,完全没必要用grepl(这个函数是用来做字符串匹配的,不适合处理数值型的逻辑判断):

  • 方法一:直接数值相乘
    因为你的两列都是0或1,只有当两者都为1时乘积才是1,其他情况都是0,完美符合需求:
# 先构造你的示例数据框
df <- data.frame(Wet = c(1,0,0,1,1,0), Cold = c(1,1,1,0,1,0))
# 新增目标列
df$`wet&cold` <- df$Wet * df$Cold
  • 方法二:逻辑判断转整数
    通过逻辑运算符&判断两列是否同时为1,再把逻辑值(TRUE/FALSE)转为整数(1/0):
df$`wet&cold` <- as.integer(df$Wet == 1 & df$Cold == 1)
  • 方法三:用dplyr包(适合tidyverse工作流)
    如果你习惯用tidyverse系列工具,可以这样写:
library(dplyr)
df <- df %>%
  mutate(`wet&cold` = as.integer(Wet & Cold))

执行后你的数据框会变成:

Wet Cold wet&cold
1   1    1        1
2   0    1        0
3   0    1        0
4   1    0        0
5   1    1        1
6   0    0        0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:50:25