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

R语言如何筛选数据框中变化率超30%对应的唯一IDs

问题原因

你当前的代码存在两个核心问题:

  • R的if()判断接收逻辑向量时,默认只会读取第一个元素的值做判断,本身就不适合用来做逐行筛选的逻辑
  • 即便条件成立,你直接调用unique(df$IDs)是对全表的ID去重,没有先过滤符合perc_change>30的行
解决方法

基础R写法(无需安装额外包)

先筛选出所有perc_change大于30的行,再对这些行对应的IDs去重即可,一行代码就能实现:

# 写法1
unique(df$IDs[df$perc_change > 30])

# 写法2 等价
unique(df[df$perc_change > 30, "IDs"])

运行后返回的结果就是你需要的:1 2 3

dplyr写法(tidyverse风格,可读性更高)

如果你习惯用tidyverse生态的工具,可以用如下写法:

library(dplyr)

# 返回向量形式的结果
df %>% 
  filter(perc_change > 30) %>% 
  pull(IDs) %>% 
  unique()

# 返回数据框形式的结果
df %>% 
  filter(perc_change > 30) %>% 
  distinct(IDs)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 21:57:03