我发现了example类似的东西
基本上,我需要保持组中的所有项目,其中用户等于某个因素。
例如,这是我的初始数据框。
data <- data.frame(user = c("a","a",'b',"b",'c',"c","a","a","a","d","d","d"),
invoiceNum =c(1,1,1,1,1,1,2,2,2,2,2,2))
我需要保留所有包含用户d
的发票。
输出如下:
user invoiceNum
1 a 2
2 a 2
3 a 2
4 d 2
5 d 2
6 d 2
我尝试编写以下代码,但它不起作用并给我以下
data%>% group_by(invoiceNum)%>%dplyr::filter(user == "d")
user invoiceNum
<fctr> <dbl>
1 d 2
2 d 2
3 d 2
答案 0 :(得分:1)
在base
R:
data[data$invoiceNum %in% unique(data[data$user=="d",]$invoiceNum),]
# user invoiceNum
#7 a 2
#8 a 2
#9 a 2
#10 d 2
#11 d 2
#12 d 2
因此,您首先找到用户invoiceNum
出现的d
unique(data[data$user=="d",]$invoiceNum)
然后使用提取的invoiceNum
过滤掉行。
修改强>
如果您想为多个用户执行相同的操作:
usr <- c("d", "a")
data[data$invoiceNum %in% unique(data[data$user %in% usr,]$invoiceNum),]
答案 1 :(得分:0)
我们可以使用%in%
data %>%
group_by(invoiceNum) %>%
filter('d' %in% user)
# user invoiceNum
# <fctr> <dbl>
#1 a 2
#2 a 2
#3 a 2
#4 d 2
#5 d 2
#6 d 2