首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dplyr distinct超过两列

dplyr distinct超过两列
EN

Stack Overflow用户
提问于 2018-08-15 17:52:56
回答 1查看 1.3K关注 0票数 1

我有一个表,其中前两行是样本标识符,第三行是距离度量,例如:

代码语言:javascript
复制
df<-data.table(H1=c(1,2,3,4,5),H2=c(7,3,2,8,9), D=c(100,4,55,66,35))

我只想在两列中找到唯一的对,即1-7,2-3,4-8,5-9。删除出现在不同列中的重复的2-3和3-2对,但保留第三行(其距离对于2-3和3-2是相同的)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-15 18:04:31

代码语言:javascript
复制
# example data
df<-data.frame(H1=c(1,2,3,4,5),
               H2=c(7,3,2,8,9), 
               D=c(100,4,55,66,35), stringsAsFactors = F)

library(dplyr)

df %>%
  rowwise() %>%             # for each row
  mutate(HH = paste0(sort(c(H1,H2)), collapse = ",")) %>% # create a new variable that orders and combines H1 and H2
  group_by(HH) %>%          # group by that variable
  filter(D == max(D)) %>%   # keep the row where D is the maximum (assumed logic*)
  ungroup() %>%             # forget the grouping
  select(-HH)               # remove unnecessary variable

# # A tibble: 4 x 3
#      H1    H2     D
#   <dbl> <dbl> <dbl>
# 1     1     7   100
# 2     3     2    55
# 3     4     8    66
# 4     5     9    35

*注意:不知道从重复项中保留一行的逻辑是什么。我不得不使用一些东西作为例子,这里我保留了具有最高D值的行。如果需要,此逻辑可以更改。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51856550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档