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

如何新增列标记个体是否达到≤150磅的体重阈值?

解决方案

我们可以通过分组判断实现需求:按Person_id分组,检查该组内是否存在体重≤150的记录,再将判断结果映射到组内所有行。

方法1:Base R 原生实现

# 加载原始数据
df <- structure(list(Person_id = c("A", "A", "A", "A", "A", "B", "B", 
"B"), Weight = c(170L, 164L, 160L, 150L, 149L, 250L, 225L, 230L
)), class = "data.frame", row.names = c(NA, -8L))

# 按个体分组判断是否达标,再匹配到原数据的每一行
df$Condition_met <- ifelse(
  df$Person_id %in% names(which(tapply(df$Weight, df$Person_id, function(x) any(x <= 150)))),
  "Yes", 
  "No"
)

方法2:dplyr 包实现(更直观)

library(dplyr)

df <- df %>%
  group_by(Person_id) %>%
  # 组内只要有一条记录达标,整组标记为Yes
  mutate(Condition_met = ifelse(any(Weight <= 150), "Yes", "No")) %>%
  ungroup()

验证结果

执行上述代码后,输出数据与期望一致:

dput(df)
# 输出内容:
structure(list(Person_id = c("A", "A", "A", "A", "A", "B", "B", 
"B"), Weight = c(170L, 164L, 160L, 150L, 149L, 250L, 225L, 230L
), Condition_met = c("Yes", "Yes", "Yes", "Yes", "Yes", "No", 
"No", "No")), class = "data.frame", row.names = c(NA, -8L))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:15:38