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)