很抱歉,如果标题令人困惑,我们不确定如何描述此问题。好吧,我有一个数据框,其中一列是采样点,我有很多,一列是采样方法,其中只有两列。这是一个简化版本:
site <- c("X", "Y", "X","Z")
method <- c("A", "B", "B", "A")
data <- data.frame(site, method)
data
site method
1 X A
2 Y B
3 X B
4 Z A
现在有些网站使用抽样方法A和方法B进行抽样,有些网站仅通过方法A或方法B进行抽样。
我试图只选择那些使用这两种方法进行采样的网站。例如,此数据的输出如下所示:
site method
1 X A
2 X B
我没有示例代码,因为我真的不知道如何执行此操作。请帮忙!
答案 0 :(得分:2)
我们可以使用data.table
。将'data.frame'转换为'data.table'(setDT(data)
),按'site'分组,if
唯一'方法'的长度大于1,然后获取子集Data.table。
library(data.table)
setDT(data)[, if(uniqueN(method)>1) .SD , by = site]
或者使用dplyr
,我们可以做到。
library(dplyr)
data %>%
group_by(site) %>%
filter(n_distinct(method)>1)
可能的base R
选项是
data[ with(data, ave(method, site, FUN = function(x) length(unique(x))>1)),]