R中是否存在多个重复的代码并保留其中之一?

时间:2019-11-21 13:41:55

标签: r tidyverse

我有以下数据

df1 <- read.table(text = " ID	Location	Place
12	A	M2
11	C	M2
 13	M	M1
12	B	M2
11	C	M2
4	D	M2
15	Z	M1
 13	M	M1
15	Q	M1
", header = TRUE)

如果位置不同,我想保留两个ID。如果ID和位置相同,则要删除其中一个。因此理想的结果将是:

ID	Location	Place
12	A	M2
12	B	M2
11	C	M2
13	M	M1
4	D	M2
15	Z	M1
15	Q	M1

我尝试了以下代码,但不会产生内在的结果

library(dplyr)
df1 %>% distinct(ID, .keep_all = TRUE)

能否获得结果?感谢您的帮助

2 个答案:

答案 0 :(得分:1)

我认为您是否关心变量Place的哪个值。 在这种情况下,它成为经典的排名问题,您可以探索如何对Place进行排名,但是要随机执行,请使用以下代码:

require(dplyr)

df1  %>%  
  group_by(ID, Location) %>%  
  mutate(rank = row_number()) %>% 
  ungroup %>% 
  filter(rank == 1) %>%  
  arrange(ID) %>% 
  select(-rank)

输出看起来像这样:

 # A tibble: 7 x 3
     ID Location Place
  <int> <fct>    <fct>
1     4 D        M2   
2    11 C        M2   
3    12 A        M2   
4    12 B        M2   
5    13 M        M1   
6    15 Z        M1   
7    15 Q        M1 

答案 1 :(得分:1)

您是否尝试在代码中添加位置?我认为它应该可以提供您想要的东西。

library(dplyr)
df1 %>% distinct(ID,Location, .keep_all = TRUE) %>% arrange(ID)