我有一个带有随机患者标识符MaskID的大型非标定数据集(data1)。我试图通过MaskID提取所有观察结果,这些观察结果也可以在较小的测试集(data2)中找到
理论上这就是我想要做的,但我知道这不正确:
data3 <- data1[data1$MaskID == data2$MaskID]
非常感谢任何帮助。
答案 0 :(得分:0)
非常接近:
data3 <- data1[data1$MaskID %in% data2$MaskID,]
答案 1 :(得分:0)
以下是其中一个解决方案:
library(tidyverse)
# 1. Data set with random patient identifier 'mask_id'
# 1.1. First data set
df_one <- data.frame(
dataset_id = 1,
mask_id = unique(as.integer(runif(10, min = 0, max = 15))))
# 1.2. Second data set
df_two <- data.frame(
dataset_id = 2,
mask_id = unique(as.integer(runif(10, min = 0, max = 15))))
# 2. Common rows with the same 'mask_id'
common_features <- intersect(df_one$mask_id, df_two$mask_id)
# 3. Select rows from first data set
df_one %>% filter(mask_id %in% common_features)
# 4. More brief form
df_one[df_one$mask_id %in% df_two$mask_id, ]