如何在r中使用删除重复项,同时保留一些条件重复项

如何在r中使用删除重复项,同时保留一些条件重复项,r,R,我有一个按区域分组的基因数据集,我测量了它们在各自区域中彼此之间的距离 目前,为了计算所有区域之间的总距离,我在我的区域距离上使用了unique(),但是,这并不意味着两个区域可能具有完全相同的数字,并且在我计算总距离时应同时保留这两个区域 我想我不知道如何将这个条件输入到我的代码中,我在这里发现的其他问题没有基于我需要的其他数据列的条件 例如,我的数据如下所示: Gene region region.distance ACE 1 10 AGT 1

我有一个按区域分组的基因数据集,我测量了它们在各自区域中彼此之间的距离

目前,为了计算所有区域之间的总距离,我在我的区域距离上使用了
unique()
,但是,这并不意味着两个区域可能具有完全相同的数字,并且在我计算总距离时应同时保留这两个区域

我想我不知道如何将这个条件输入到我的代码中,我在这里发现的其他问题没有基于我需要的其他数据列的条件

例如,我的数据如下所示:

Gene  region  region.distance
ACE      1       10
AGT      1       10
BRCA     2       20
DVL1     3       10
NOTCH3   4       40

然后,我使用此代码获得
区域中的唯一值。距离
对总距离求和:

total.distance <- sum(unique(df$region.distance))

total.distance您可以删除组内的重复项,然后
sum

library(dplyr)
df %>%
  group_by(region) %>%
  filter(!duplicated(region.distance)) %>%
  pull(region.distance) %>% sum
#[1] 80
类似地,在base R中,我们可以

sum(subset(df, !ave(region.distance, region, FUN = duplicated))$region.distance)
#[1] 80
数据

df <- structure(list(Gene = structure(1:5, .Label = c("ACE", "AGT", 
"BRCA", "DVL1", "NOTCH3"), class = "factor"), region = c(1L, 
1L, 2L, 3L, 4L), region.distance = c(10L, 10L, 20L, 10L, 40L)), 
class = "data.frame", row.names = c(NA, -5L))
df <- structure(list(Gene = structure(1:5, .Label = c("ACE", "AGT", 
"BRCA", "DVL1", "NOTCH3"), class = "factor"), region = c(1L, 
1L, 2L, 3L, 4L), region.distance = c(10L, 10L, 20L, 10L, 40L)), 
class = "data.frame", row.names = c(NA, -5L))

df我们可以使用
data.table

library(data.table)
unique(setDT(df),by = c("region", "region.distance"))[, sum(region.distance)]
#[1] 80
数据
df