首页 > 解决方案 > 如何将两个不同的 ID 协调为一个,然后应用于具有两个 ID 的 df,但在 R 中只计算一次主题?

问题描述

对于同一个主题(患者),我有两个不同的 ID。在另一个 ID 向量中,两个 ID 都在其中,表示同一患者。我如何只计算一次患者(按 ID1),而不是两个具有不同 ID 的不同患者?

ID1 ID2 
 11 12
 13 14
 15 16

向量

11,12,13,13,14,16

我只想按 ID1 计算唯一的患者,这样我就可以得到

x=11,13,15

谢谢!

标签: rjoindata-wrangling

解决方案


为每位患者创建一个唯一ID编号,以长格式获取数据,以便两个 ID 位于同一列中,将其与不同值的向量选择向量值连接ID

library(dplyr)

df %>%
  mutate(ID = row_number()) %>%
  tidyr::pivot_longer(cols = c(ID1, ID2)) %>%
  inner_join(tibble::enframe(vector), by = 'value') %>%
  distinct(ID, .keep_all = TRUE) %>%
  select(value)

#  value
#  <dbl>
#1    11
#2    13
#3    16

数据

df <- structure(list(ID1 = c(11L, 13L, 15L), ID2 = c(12L, 14L, 16L)), 
class = "data.frame", row.names = c(NA, -3L))
vector <- c(11, 12, 13, 13, 14, 16)

推荐阅读