如何检查R中的类别是否匹配,其中类别存储在不同的文件中,并且元素可以有多个类别?

如何检查R中的类别是否匹配,其中类别存储在不同的文件中,并且元素可以有多个类别?,r,match,categories,R,Match,Categories,我有两个表,Catdata和ElementData。如果Catdata$category是fraction或suspent或thriller,我希望ElementData$Match返回1,否则返回0。如果没有循环,我将如何执行此操作 Catdata Element Category abc123 thriller abc123 horror def456 fiction def456 suspense def456 thriller pqr789

我有两个表,Catdata和ElementData。如果
Catdata$category
fraction
suspent
thriller
,我希望
ElementData$Match
返回1,否则返回0。如果没有循环,我将如何执行此操作

Catdata

Element  Category  
abc123   thriller  
abc123   horror  
def456   fiction  
def456   suspense  
def456   thriller  
pqr789   romance  
pqr789   fiction  
xyz123   thriller  
元素数据

Element                     Match  
def456  
abc123  
xyz123  
pqr789  

如果希望
ElementData$Match
Catdata$category
any值符合条件时返回1,则可以执行以下操作:

library(dplyr)
## Create lookup table of all elements matching the criteria:
matchData <- Catdata %>%
        group_by(Element) %>%
        dplyr::summarise(Match = (Category %in% 
                c("fiction", "suspense", "thriller")) %>% 
            any %>% as.integer)

## Merge your second table with the lookup table
ElementData <- ElementData %>% left_join(matchData, by = "Element")
库(dplyr)
##创建符合条件的所有元素的查找表:
匹配数据%
分组依据(元素)%>%
dplyr::摘要(匹配=(类别%in%)
c(“小说”、“悬念”、“惊悚片”))%>%
任意%>%作为.integer)
##将第二个表与查找表合并
ElementData%左联接(matchData,by=“Element”)

您可以使用%
中的
%,即
作为.integer(ElementData$Element%在%Catdata[,1])
这不会返回元素是否存在于categoryData$ElementID中,而不是检查类别是否与小说、惊悚片或悬念匹配吗?我想我读错了这个问题。可能发布了一个解决方案,该解决方案更正了您只需在联接中指定该名称的问题,例如,
ElementData%left\u联接(matchData,by=c(“DataElement”=“Element”))
您知道如果一个类别匹配,我如何编辑它以返回0.33吗,如果两个匹配,则为0.66;如果三个匹配,则为1?使用以下方法解决:matchData%group_by(Element)%%>%dplyr::Summary(匹配=0.33*(3-总和(类别%c(“小说”、“悬念”、“惊悚片”))%%>%any%%>%as.integer)