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

R语言如何判断dataframe指定列是否存在7-18区间的数值并生成新标记列

R 实现DataFrame新增区间判断标记列

实现思路

将values列的逗号分隔字符串拆分为独立数值,逐一判断是否落在7~18闭区间内,只要存在符合条件的值标记为1,否则为0。

方法1:Base R 实现

# 自定义区间判断函数
check_val <- function(val_str) {
  num_vec <- as.numeric(unlist(strsplit(val_str, ",")))
  # 存在符合区间的数值返回1,否则返回0
  as.integer(any(num_vec >= 7 & num_vec <= 18, na.rm = TRUE))
}

# 批量应用到values列,生成flag标记列
df$flag <- sapply(df$values, check_val)

方法2:Tidyverse 风格实现

library(dplyr)
library(purrr)

df <- df %>%
  mutate(flag = map_int(values, ~{
    num_vec <- as.numeric(unlist(strsplit(.x, ",")))
    as.integer(any(num_vec >= 7 & num_vec <= 18, na.rm = TRUE))
  }))

输出结果验证

处理后得到的df如下:

KEYCODEvaluesflag
A12,31
B20
C2,71
D161

注意事项

any()中添加na.rm = TRUE是为了避免values列存在非数字字符时,as.numeric转成NA导致判断结果异常,不需要可以删除该参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:36:07