使用两个数据帧进行子集

时间:2018-05-19 18:54:13

标签: r

我有一个带有随机患者标识符MaskID的大型非标定数据集(data1)。我试图通过MaskID提取所有观察结果,这些观察结果也可以在较小的测试集(data2)中找到

理论上这就是我想要做的,但我知道这不正确:

data3 <- data1[data1$MaskID == data2$MaskID]

非常感谢任何帮助。

2 个答案:

答案 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, ]