当另一列中的值等于另一个数据集中的任何行时,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
我在一个数据集中有一个姓名列表,在另一个数据集中有一列 '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