我是一个初学者,面临着一项艰巨的任务,所有我发现使用搜索功能的典型的长到宽的整形工具都没有真正为我做好这项工作。如果有人能帮我,我会很高兴的。
我努力做到以下几点:
我有病人资料,每个病人都有一个独特的病人数目,但多次住院会导致每个人多个病例。我想处理这些案子。问题是,我有每个病例的所有诊断,但并不是每个人都有相同的诊断数,而且我不知道如何告诉R创建一个新的诊断变量(和诊断日期)。每一个帮助都是非常感谢的!
所以,我有一个很大的数据集,大致是这样的:
Patient Case Diagnosis DateOfDiagnosis
1 John Doe 1 A 2010-10-10
2 John Doe 1 B 2010-10-10
3 John Doe 1 C 2010-10-10
4 Peter Griffin 2 D 2010-10-11
5 Peter Griffin 2 E 2010-10-11
6 Homer Simpson 3 F 2010-10-12
7 Homer Simpson 4 G 2010-10-13我需要一个接一个的案例,我需要所有的诊断和他们的日期在不同的变量中。这是没有问题的,但在病例或诊断中没有模式,因此有些患者只有一例,其他5例,有些病例有1例,5例有相应的诊断日期。所以我需要的是这样的:
Patient Case Diag1 DateOfDiag1 Diag2 DateOfDiag2 Diag3 DateOfDiag3 ....
1 John Doe 1 A 2010-10-10 B 2010-10-10 C 2010-10-10
2 Peter Grif 2 D 2010-10-11 E 2010-10-11 NA NA
3 Homer Simp 3 F 2010-10-12 NA NA NA NA
4 Homer Simp 4 G 2010-10-13 NA NA NA NA我的例子的代码是:
Patient <- c('John Doe','John Doe','John Doe', 'Peter Griffin','Peter Griffin', 'Homer Simpson', 'Homer Simpson')
Case <- c(1,1,1,2,2,3,4)
Diagnosis <- c('A','B','C','D','E','F','G')
DateOfDiagnosis <- as.Date(c('2010-10-10','2010-10-10','2010-10-10','2010-10-11','2010-10-11','2010-10-12','2010-10-13'))
df<-data.frame(Patient, Case, Diagnosis, DateOfDiagnosis)每一个帮助都是非常感谢的!亲切的问候,简
发布于 2019-12-14 09:58:38
在创建了唯一的列之后,您可以使用pivot_wider。
library(dplyr)
library(tidyr)
df %>%
group_by(Patient, Case) %>%
mutate(row = row_number()) %>%
pivot_wider(values_from = c(Diagnosis, DateOfDiagnosis), names_from = row)
# Patient Case Diagnosis_1 Diagnosis_2 Diagnosis_3 DateOfDiagnosis_1 DateOfDiagnosis_2 DateOfDiagnosis_3
# <fct> <dbl> <fct> <fct> <fct> <date> <date> <date>
#1 John Doe 1 A B C 2010-10-10 2010-10-10 2010-10-10
#2 Peter Griffin 2 D E NA 2010-10-11 2010-10-11 NA
#3 Homer Simpson 3 F NA NA 2010-10-12 NA NA
#4 Homer Simpson 4 G NA NA 2010-10-13 NA NA https://stackoverflow.com/questions/59334007
复制相似问题