R 寻找日与日的交集
我有一个数据框,其中一列包含代码,另一列包含日期。我正在尝试使用dplyr和intersect来查找各天中的公共元素 样本数据:R 寻找日与日的交集,r,dplyr,R,Dplyr,我有一个数据框,其中一列包含代码,另一列包含日期。我正在尝试使用dplyr和intersect来查找各天中的公共元素 样本数据: df <- data.frame(A=c(2289,490,3940,1745,855,3954,2289,555,3940,667,855,3954,2289,490,12,1745,3000,3954,2289,490,3940,28,855,3954),B=as.Date(c("2019-08-01","2019-08-01","2019-08-01","
df <- data.frame(A=c(2289,490,3940,1745,855,3954,2289,555,3940,667,855,3954,2289,490,12,1745,3000,3954,2289,490,3940,28,855,3954),B=as.Date(c("2019-08-01","2019-08-01","2019-08-01","2019-08-01","2019-08-01","2019-08-01","2019-08-02","2019-08-02","2019-08-02","2019-08-02","2019-08-02","2019-08-02","2019-08-03","2019-08-03","2019-08-03","2019-08-03","2019-08-03","2019-08-03","2019-08-04","2019-08-04","2019-08-04","2019-08-04","2019-08-04","2019-08-04")))
预期输出是每天常见的代码。例如,2289是期望值,但28不是
我想知道在这种情况下是否可以使用intersect
谢谢你的帮助
问候这里有一个方法-
df %>%
# filter(!duplicated(.)) %>% # add this if there can be duplicates
count(A) %>%
filter(n == n_distinct(df$B))
# A tibble: 2 x 2
A n
<dbl> <int>
1 2289 4
2 3954 4
这里有一条路-
df %>%
# filter(!duplicated(.)) %>% # add this if there can be duplicates
count(A) %>%
filter(n == n_distinct(df$B))
# A tibble: 2 x 2
A n
<dbl> <int>
1 2289 4
2 3954 4
作为旁注-您可以在
base
R中执行以下操作:
sort(unique(df$A))[rowMeans(table(df)) == 1]
#2289 3954
作为旁注-您可以在
base
R中执行以下操作:
sort(unique(df$A))[rowMeans(table(df)) == 1]
#2289 3954
您也可以尝试:
df%>%group\u by(A)%>%summary(如果所有=长度(相交(B,唯一(df$B)))==长度(唯一(df$B))
使用相交
您也可以尝试:
df%>%group\u by(A)%>%summary(如果所有=长度(相交(B,唯一(df$B)))==长度(唯一(df$B))
它使用了
intersect
为什么不删除df$
?@camileB
在count(A)
之后被删除。哦,对了。所以你不能用groupby
+mutate
而不是count
?那你就不会失去另一个column@camille我想到了这一点,但我发现上面的代码更简洁,而且我认为使用df$B
没有任何问题,是吗?在这种情况下,我想没有。在一个更复杂的情况下,如果您正在检查管道中较高位置的n_distinct
,您可能会遇到麻烦。它之所以突出,是因为它不遵循正常的tidyeval语法,所以我很好奇为什么你会这样做为什么不删除df$
?@camileB
在count(A)
之后被删除。哦,对了。所以你不能用groupby
+mutate
而不是count
?那你就不会失去另一个column@camille我想到了这一点,但我发现上面的代码更简洁,而且我认为使用df$B
没有任何问题,是吗?在这种情况下,我想没有。在一个更复杂的情况下,如果您正在检查管道中较高位置的n_distinct
,您可能会遇到麻烦。它之所以突出,是因为它不遵循正常的tidyeval语法,所以我主要是想知道你为什么这样做