Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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,找到不同“源”之间每个“名称”的“日期”变量的交集 以下是示例数据框: 因此,对于名称a,每个源值都存在以下日期向量: 我只想通过比较不同的源值来保留给定名称日期相交的记录(行),因此在这种情况下,名称与值a的所有源子集之间的相交日期为:2019年1月1日、2019年1月3日、2019年1月5日 我曾考虑过按“Name”变量分组,然后使用dplyr::intersect,但我想不出一种方法,如何

我有一个包含以下变量的数据框:
名称
日期
。 我想使用管道操作符(
%%>%%
)和
dplyr
,找到不同“源”之间每个“名称”的“日期”变量的交集

以下是示例数据框:

因此,对于名称
a
,每个
值都存在以下日期向量:

我只想通过比较不同的
值来保留给定
名称
日期相交的记录(行),因此在这种情况下,
名称
与值
a
的所有
子集之间的相交日期为:2019年1月1日、2019年1月3日、2019年1月5日

我曾考虑过按“Name”变量分组,然后使用
dplyr::intersect
,但我想不出一种方法,如何按“Source”对
df
进行子集划分,并将子集提供给
dplyr::intersect
函数,以使不同的“Date”向量子集相交(由“来源”标签确定):


或者,是否有一种使用
internal\u join
或其他一些
join
的简洁方法来编写此代码?

我找到了它,因此下面的语法是我想要的:

df %>% dplyr::mutate(Source.Count = n_distinct(Source)) %>% dplyr::group_by(Name, Date) %>% dplyr::filter(n() == Source.Count) %>% dplyr::select(Source, Name, Date, Value)

我之所以创建
Source.Count
变量,是因为在对
n\u distinct
函数进行分组后,该函数没有正常工作,并且没有为每行提供适当的源数量。然后,我按
Name
Date
n()
函数I计算给定的
名称
日期
组合的实例数。如果实例数等于不同的
标签数,这意味着
名称
日期
的组合在所有
子集中都存在。

请提供我是玩具数据。否则很难理解你的问题。嗨@Cettt,我添加了一个示例数据框,得到了预期的结果。你添加了一个屏幕截图,很难使用屏幕截图。而是使用
dput(mydata)
并将结果发布到您的问题中。同时以相同的形式发布所需的输出。抱歉,这还是一个新问题。但我设法找到了答案,并将答案发布在下面。
df %>% dplyr::mutate(Source.Count = n_distinct(Source)) %>% dplyr::group_by(Name, Date) %>% dplyr::filter(n() == Source.Count) %>% dplyr::select(Source, Name, Date, Value)