根据同一列中的不同值和另一列中的唯一值选择数据R
问题描述:
对不起,如果标题混淆,不知道如何描述此问题。好吧,我有一个数据帧,其中一列是采样点,其中有很多,另一列是采样方法,其中只有两列。下面是一个简化版本:根据同一列中的不同值和另一列中的唯一值选择数据R
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
我没有样本代码,因为我真的不知道如何做到这一点。请帮忙!
答
我们可以使用data.table
。将'data.frame'转换为'data.table'(setDT(data)
),按'site'分组,if
唯一'method'的长度大于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)),]
类似 - http://stackoverflow.com/questions/21421031/eliminate-groups-which-have-different-values-in- r/21421184 - 以及相关的问题也非常相似。 – thelatemail