Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 寻找日与日的交集_R_Dplyr - Fatal编程技术网

R 寻找日与日的交集

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","

我有一个数据框,其中一列包含代码,另一列包含日期。我正在尝试使用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","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$
?@camile
B
count(A)
之后被删除。哦,对了。所以你不能用
groupby
+
mutate
而不是
count
?那你就不会失去另一个column@camille我想到了这一点,但我发现上面的代码更简洁,而且我认为使用
df$B
没有任何问题,是吗?在这种情况下,我想没有。在一个更复杂的情况下,如果您正在检查管道中较高位置的
n_distinct
,您可能会遇到麻烦。它之所以突出,是因为它不遵循正常的tidyeval语法,所以我很好奇为什么你会这样做为什么不删除
df$
?@camile
B
count(A)
之后被删除。哦,对了。所以你不能用
groupby
+
mutate
而不是
count
?那你就不会失去另一个column@camille我想到了这一点,但我发现上面的代码更简洁,而且我认为使用
df$B
没有任何问题,是吗?在这种情况下,我想没有。在一个更复杂的情况下,如果您正在检查管道中较高位置的
n_distinct
,您可能会遇到麻烦。它之所以突出,是因为它不遵循正常的tidyeval语法,所以我主要是想知道你为什么这样做