如何检查R中的类别是否匹配,其中类别存储在不同的文件中,并且元素可以有多个类别?
我有两个表,Catdata和ElementData。如果如何检查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$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)