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

如何用dplyr基于现有列条件为DataFrame派生新列

用dplyr派生条件新列的解决方案

这事儿用dplyr的mutate()函数就能轻松搞定,正好匹配你的需求。下面给你两种可行的方法,都能得到你想要的结果:

第一步:构造原始数据(已有数据可跳过)

先把你提供的原始DataFrame用R代码还原出来:

library(dplyr)

# 创建原始数据集
df <- tibble(
  datetime = c("12/1/2017", "12/2/2017", "12/3/2017", "12/4/2017", 
               "12/5/2017", "12/6/2017", "12/7/2017"),
  outcome = c(1, 1, 1, 2, 1, 1, 1)
)

第二步:派生新列result

这里有两种写法,选你觉得顺手的就行:

方法1:用if_else()明确指定条件(可读性更强)

这种方式逻辑直白,适合刚接触dplyr的朋友:

df_result <- df %>%
  mutate(result = if_else(outcome > 1, 1, 0))

方法2:利用逻辑值转整数(更简洁)

在R里,布尔值TRUE等价于1,FALSE等价于0,所以可以直接把条件判断结果转成整数:

df_result <- df %>%
  mutate(result = as.integer(outcome > 1))

最终结果

运行任意一段代码后,你都会得到期望的DataFrame:

# A tibble: 7 × 3
  datetime  outcome result
  <chr>       <dbl>  <int>
1 12/1/2017       1      0
2 12/2/2017       1      0
3 12/3/2017       1      0
4 12/4/2017       2      1
5 12/5/2017       1      0
6 12/6/2017       1      0
7 12/7/2017       1      0

简单说下:mutate()是dplyr中添加/修改列的核心函数,两种方法本质都是基于outcome > 1的条件赋值,只是写法不同,效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:35:58