子集化data.frame

时间:2018-01-13 00:46:38

标签: r dataframe dplyr

可能很容易。

我有一个data.frame,其中有三列:clustergroupid。每个

set.seed(1)
df <- data.frame(cluster=letters[sample(length(letters),1000,replace=T)],
                 group=LETTERS[1:2][sample(2,1000,replace=T)],
                 id=1:1000)

每个cluster可以由一个或多个group s表示,其中每个组可以由一个或多个id s表示。

我正在寻找一种快速的子集df方法,只保留cluster s同时显示group的行。

这对我的实际数据维度来说非常慢:

library(dplyr)

do.call(rbind,lapply(unique(df$cluster),function(l){
  if(length(unique(dplyr::filter(df,cluster == l)$group) == 2)){
    return(dplyr::filter(df,cluster == l))
  } else{
    return(NULL)
  }
})

使用dplyr吗?

有更快的方法吗?

0 个答案:

没有答案