R - 在数据帧的子集中查找所有唯一值

jsl*_*che 2 r unique duplicates

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

例如,来自:

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
Run Code Online (Sandbox Code Playgroud)

我想提取以下数据框.

data_subsets   data_values
    A              1
    A              5
    B              6
    B              7
Run Code Online (Sandbox Code Playgroud)

我一直在玩,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),]
Run Code Online (Sandbox Code Playgroud)

Mat*_*erg 5

首先,找到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
Run Code Online (Sandbox Code Playgroud)

现在提取行:

> df[x==1,]
   data_subsets data_values
1             A           1
5             A           5
9             B           6
10            B           7
Run Code Online (Sandbox Code Playgroud)

请注意,您错过了上面的"A 5".没有"B 5".