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

如何筛选R语言数据框中所有Type行仅为A的ID?

问题分析与解决方案

你的代码逻辑存在偏差:all("A" %in% Type)仅判断当前ID对应的Type列中存在A,但不会排除其他类型(比如ID2的Type里既有A也有B,这个条件依然会成立)。而你需要筛选的是所有Type行都只包含A的ID,因此得更换判断条件。

正确代码

可以用两种等价的逻辑实现需求:

  • all(Type == "A"):检查当前分组内所有Type值都是A
  • !any(Type != "A"):检查当前分组内没有任何一个Type不是A

具体代码如下:

library(tidyverse)

DATA <- read.table(h=T,text=
"
ID      Type
1        A
1        A
1        A
2        B
2        B
2        A
3        A
3        A")

# 方法1:验证所有Type均为A
result <- DATA %>%
  group_by(ID) %>%
  filter(all(Type == "A")) %>%
  ungroup() # 可选操作,取消分组状态

# 方法2:验证不存在非A的Type
result <- DATA %>%
  group_by(ID) %>%
  filter(!any(Type != "A")) %>%
  ungroup()

print(result)

运行结果

输出完全匹配你需要的Desired_output:

# A tibble: 5 × 2
     ID Type 
  <int> <chr>
1     1 A    
2     1 A    
3     1 A    
4     3 A    
5     3 A

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:34:54