我遇到以下问题。 我的数据集每行都有一个不同的患者,并且我有变量“医院”和“外科医生”,它们告诉我这些患者在哪家医院以及由哪位外科医生进行手术。
每位外科医生只在一家医院工作。有 20 家医院,每家医院有 3 到 10 名外科医生。 (总共约100名外科医生) 问题是在我的数据中所有外科医生都编号为 1 到 10。因此,A 医院有一名外科医生 1,B 医院有一名外科医生 1。但是,他们是不同的外科医生。
我想创建一个名为“surgeon_unique”的新变量,它对于每个独特的外科医生(基于医院*外科医生)都有一个唯一的整数(从0到100)。
有人可以告诉我该怎么做吗?我在网上找不到答案。非常感谢!
我希望有别的东西,而不是 case_when,因为我认为这意味着我必须编写 100 行代码(对于医院 + 外科医生的每个组合,都需要编写一行新代码)
在基础 R 中,您可以使用
paste0
作为 as.factor
来制作一个独特的外科医生列,它是一个因子 - 在 R 中,因子的后面有“隐藏”的数字。如果你想让它们被赋予一个数字,你可以把它包裹在 as.numeric
:
df <- data.frame(patient = 1:15,
hosptial = rep(LETTERS[1:3], each = 5),
surgeon = c(rep(1:5, 2), c(2,2,4,5,5)))
df$surgeon_code <- as.factor(paste0(df$hosptial, df$surgeon))
df$surgeon_num <- as.numeric(df$surgeon_code)
输出:
# patient hosptial surgeon surgeon_code surgeon_num
# 1 1 A 1 A1 1
# 2 2 A 2 A2 2
# 3 3 A 3 A3 3
# 4 4 A 4 A4 4
# 5 5 A 5 A5 5
# 6 6 B 1 B1 6
# 7 7 B 2 B2 7
# 8 8 B 3 B3 8
# 9 9 B 4 B4 9
# 10 10 B 5 B5 10
# 11 11 C 2 C2 11
# 12 12 C 2 C2 11
# 13 13 C 4 C4 12
# 14 14 C 5 C5 13
# 15 15 C 5 C5 13