相交两列不同的长度
Intersecting two columns with different lengths
我有一个包含 5000 user_ids 来自 Twitter 的数据集 1。我想将此数据集中的 user_ids 与另一个包含来自 Twitter 的其他 user_ids 的数据集 2 相交,同时在我的数据集 1 中创建一个新列,其中数据集 1 中的每个 user_id 要么得到得分为“1”(如果相交)或“0”(如果不相交)。我在下面尝试了以下代码,但我只是在新列 'intersect' 中得到一个输出,其中包含一些(随机)零,然后是很多 NA。
for(i in 1:ncol(data1)){
#intersect with other data
ids_intersect = intersect(data1$user_id, data2$user_id)
if(length(ids_intersect == 0)){
data1[i, "intersect"] <- 0 # no intersect
} else {
data1[i, "intersect"] <- 1 # intersect
}
}
我还尝试了另一个代码,我发现它更直观,但是这个代码不起作用,因为两个数据集的行长不同(“替换有 3172 行,数据有 5181”)。但与上述方式相同,此处的意图是在新列 'intersect' 中获得分数 1 'if intersect' 或 0/NA 'if no intersect'。但是我不确定如何在以下代码中实现它:
data$intersect <- intersect(data1$user_id, data2$user_id)
根据是否有 intersect/match 将 1 或 0 分配给新列中的 user_ids 的任何方法?
一个舒适的选择是使用 dplyr
包中的 mutate()
和 Base R %in%
命令,如下所示。
数据
data1 <- data.frame(user_id = c("Test1",
"Test2",
"Test4",
"Test5"))
data2 <- data.frame(user_id = c("Test1",
"Test3",
"Test4"))
代码
data1 %<>%
mutate(Existence = ifelse(user_id %in% data2$user_id,
1,
0))
输出
> data1
user_id Existence
1 Test1 1
2 Test2 0
3 Test4 1
4 Test5 0
我有一个包含 5000 user_ids 来自 Twitter 的数据集 1。我想将此数据集中的 user_ids 与另一个包含来自 Twitter 的其他 user_ids 的数据集 2 相交,同时在我的数据集 1 中创建一个新列,其中数据集 1 中的每个 user_id 要么得到得分为“1”(如果相交)或“0”(如果不相交)。我在下面尝试了以下代码,但我只是在新列 'intersect' 中得到一个输出,其中包含一些(随机)零,然后是很多 NA。
for(i in 1:ncol(data1)){
#intersect with other data
ids_intersect = intersect(data1$user_id, data2$user_id)
if(length(ids_intersect == 0)){
data1[i, "intersect"] <- 0 # no intersect
} else {
data1[i, "intersect"] <- 1 # intersect
}
}
我还尝试了另一个代码,我发现它更直观,但是这个代码不起作用,因为两个数据集的行长不同(“替换有 3172 行,数据有 5181”)。但与上述方式相同,此处的意图是在新列 'intersect' 中获得分数 1 'if intersect' 或 0/NA 'if no intersect'。但是我不确定如何在以下代码中实现它:
data$intersect <- intersect(data1$user_id, data2$user_id)
根据是否有 intersect/match 将 1 或 0 分配给新列中的 user_ids 的任何方法?
一个舒适的选择是使用 dplyr
包中的 mutate()
和 Base R %in%
命令,如下所示。
数据
data1 <- data.frame(user_id = c("Test1",
"Test2",
"Test4",
"Test5"))
data2 <- data.frame(user_id = c("Test1",
"Test3",
"Test4"))
代码
data1 %<>%
mutate(Existence = ifelse(user_id %in% data2$user_id,
1,
0))
输出
> data1
user_id Existence
1 Test1 1
2 Test2 0
3 Test4 1
4 Test5 0