R - 在数据框的子集中找到所有唯一值

标签 r duplicates unique

我有一个包含两列的数据框。第一列定义数据的子集。我想在第二列中找到仅出现在第一列的一个子集中的所有值。

例如,来自:

df=data.frame(
  data_subsets=rep(LETTERS[1:2],each=5),
  data_values=c(1,2,3,4,5,2,3,4,6,7))

data_subsets data_values
      A           1
      A           2
      A           3
      A           4
      A           5
      B           2
      B           3
      B           4
      B           6
      B           7

我想提取以下数据框。

data_subsets   data_values
    A              1
    A              5
    B              6
    B              7

我一直在尝试使用 duplicated 但我似乎无法让它工作。任何帮助表示赞赏。有许多主题都在解决类似的问题,希望我在搜索时没有忽略答案!

编辑

我修改了@Matthew Lundberg 计算元素数量并从数据框中提取的方法。出于某种原因,他的方法不适用于我拥有的数据框,所以我想到了这个,虽然不太优雅,但可以完成工作:

counts=rowSums(do.call("rbind",tapply(df$data_subsets,df$data_values,FUN=table)))
extract=names(counts)[counts==1]
df[match(extract,df$data_values),]

最佳答案

首先求df$data_values中每个元素的个数:

 x <- sapply(df$data_values, function(x) sum(as.numeric(df$data_values == x)))

> x
 [1] 1 2 2 2 1 2 2 2 1 1

现在提取行:

> df[x==1,]
   data_subsets data_values
1             A           1
5             A           5
9             B           6
10            B           7

请注意,您错过了上面的“A 5”。没有“B 5”。

关于R - 在数据框的子集中找到所有唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10873203/

相关文章:

r - “xgboost” 官方包与 R 中 "caret"包的 xgboost 的不同结果

r - Knitr 中的 Cairo 字体大小

php - 删除重复项并更新唯一的一个语句中的所有内容?

python - 如何根据另一列的过滤器或条件删除数据帧的重复行?

excel - 如何使用VBA查找重复项的单元格地址

防止重叠的postgresql唯一索引

sql - MS-Access 选择非唯一 ID 的第一行

R gridExtra 2.0.0 : tableGrob vertical and horizontal padding

r - 如何在 R 中的数据行中跨变量/向量查找模式

javascript - 基于一个属性的唯一 JavaScript 数组