我有一个这样的数据集

data <- data.frame(ID = c("1a", "1b", "2a", "2b", "3a", "4b", "5a", "5b"),
           Sex = c(1, 2, 2, 1, 1, 2, 1, 2))
 ID Sex
 1a   1
 1b   2
 2a   2
 2b   1
 3a   1
 4b   2
 5a   1
 5b   2

我想根据ID进行过滤.具体来说,如果ID中的字符串中有相同的数字,例如1a和1b、2a和2b、5a和5b,那么我想过滤Sex=1的行.此外,我想保留带有3a和4b的行,因为它没有3b和4a的对应项,无论其在Sex中的值如何.

我的最终期望输出是:

 ID Sex
 1a   1
 2b   1
 3a   1
 4b   2
 5a   1

谢谢你的帮助!

推荐答案

我们可以根据"ID"的数字部分进行分组,其中Sex为1,或者当行数为1时(|)

library(dplyr)
data %>% 
   group_by(grp = readr::parse_number(ID)) %>%
   filter(Sex == 1|n() ==1) %>%
   ungroup %>% 
   select(-grp)

-输出

# A tibble: 5 × 2
  ID      Sex
  <chr> <dbl>
1 1a        1
2 2b        1
3 3a        1
4 4b        2
5 5a        1

R相关问答推荐

更改网格的crs以匹配简单要素点对象的crs

如何使用stat_extract_all正确提取我的目标值?

如何在ggplot 2线性图的每个方面显示每个组的误差条?

如何根据条件计算时差(天)

判断字符串中数字的连续性

名称输出pmap on tible

基于不同组的列的相关性

过滤器数据.基于两列的帧行和R中的外部向量

如何将移除事件分配给动态创建的按钮?

如何使用列表中多个列表中的第一条记录创建数据框

如何提取所有完美匹配的10个核苷酸在一个成对的匹配与生物字符串在R?>

如何识别倒排的行并在R中删除它们?

为什么在BASE R中绘制线条时会看到线上的点?

来自程序包AFEX和amp;的类/函数和NICE_TABLE&冲突

将多个变量组合成宽格式

随机 Select 的非NA列的行均数

如何用不同长度的向量填充列表?

在GT()中的列之间添加空格

从字符串01JAN2021创建日期

从多行中 Select 最小值