如何使每个基因一致只获得一个锌

时间:2018-08-11 20:53:17

标签: r

我有一张桌子,桌子上有两对(Lnc /基因)及其距离 但我需要过滤以获取每个Lnc的最接近基因

mytable

示例

Genex Lnc1 1KB Geney Lnc4 20KB

提前谢谢

2 个答案:

答案 0 :(得分:1)

下面是一种可能的dplyr解决方案。请尝试通过共享最少的数据集/代码来提出问题reproducible

# importing the necessary package
library(dplyr)

# reproducing your data
df <- data_frame(
  Gene = c("Gene X", "Gene X", "Gene X", "Gene Y"),
  Lnc = c("Lnc1", "Lnc2", "Lnc3", "Lnc4"),
  `Distance (KB)` = c(1, 300, 200, 20)
)

# grouping by Gene and choosing the minimum Gene-Lnc distance 
df %>%
  group_by(Gene) %>%
  filter(`Distance (KB)` == min(`Distance (KB)`))

# # A tibble: 2 x 3
# # Groups:   Gene [2]
#   Gene   Lnc   `Distance (KB)`
#   <chr>  <chr>           <dbl>
# 1 Gene X Lnc1                1
# 2 Gene Y Lnc4               20

答案 1 :(得分:0)

如果只有一对Lnc,Gene具有最接近的距离,那么您也可以在下面使用

   df%>%
   group_by(Gene)%>%
   arrange(`Distance (KB)`)%>%
   summarise(Lnc=first(Lnc), Dist=first(`Distance (KB)`))