当另一列中的值等于另一个数据集中的任何行时,R 中的函数用于在新列中获取 0

Function in R for getting a 0 in new column when value in another column equals any of the rows in another dataset

我在一个数据集中有一个姓名列表,在另一个数据集中有一列 'name'。我是 R 给我一个新列,如果我的第一个数据集中的任何名称出现在该行的 'name' 列中,它会显示 1。换句话说,我希望它逐行显示,并在我的第一个数据集中查看该行单元格中的值。如果该值出现在我的第一个数据集中,我希望它在新列中将其编码为 1。你能帮我吗? 我很抱歉没有提供数据结构——这是我第一次发帖。这是我正在尝试做的事情。

myDataSet1 <- as.data.frame( cbind( "firstname" = c("Jenny", "Jane", "Jessica", "Jamie", "Hannah"), "year" = c(2018, 2019, 2020, 2021, 2022)  ) )
    
myDataSet2 <- as.data.frame( cbind( "name" = c("Jenny", "John", "Andy", "Jamie", "Hannah", "Donny"), "dob" = c(1, 2, 3, 4, 5, 6) ) )

我想知道列 myDataSet1$firstname 的每一行中列出的每个名称是否出现在 mydataset2$name 列的任何位置。 所以,在这种情况下,理想的结果应该是这样的。

我的数据集1

firstname  year  namematch
Jenny      2018  1
Jane       2019  0
Jessica    2020  0
Jamie      2021  1
Hannah     2022  0

请提供一些您的数据示例,我试图用一些随机数据进行猜测:

    myDataSet1 <- as.data.frame( cbind( "PersonName" = c("Peter", "Jane", "John", "Louis", "Hannah"), 
                                        "NumberOfDogs" = c(9, 2, 5, 3, 5) ) )
    
    myDataSet2 <- as.data.frame( cbind( "Name" = c("Nora", "John", "Andy", "Louis", "Hannah", "Donny"), 
                                        "NumberOfCats" = c(1, 2, 3, 4, 5, 6) ) )
    myDataSet1
    myDataSet2
    
    # This applies anonymous function to each name of Mydataset1 -- PersonName, 
    # tests whether it is contained anywhere inside MyDataSet2 -- Name and return result of 0/1.
    myDataSet1$IsInDataSet2 <- sapply(myDataSet1$PersonName, 
                                      function(currentName) as.integer( currentName %in% myDataSet2$Name) ) 

结果

myDataSet1

PersonName NumberOfDogs IsInDataSet2
1      Peter            9            0
2       Jane            2            0
3       John            5            1  #contained in DataSet2
4      Louis            3            1  #contained in DataSet2
5     Hannah            5            1  #contained in DataSet2