【发布时间】:2020-06-24 12:51:58
【问题描述】:
我有一个包含患者数据的大型数据集。有些患者有多行,我想将这些行合并,以便每个患者都有一行。
我有大约 20 个不同的变量。组合行时,某些变量需要保持不变(例如,在第 1 组中有 4 行的患者,在组合行时仍应在第 1 组),但我也有必须满足特定条件的变量(例如,如果患者在其中一行(或多行)进行了手术,则应为“是”。如果没有,则应为“否”)。
我已经尝试寻找答案,但我很困惑。我尝试使用 plyr,但似乎不建议使用此功能,因为数据集非常大时它会变得很慢。我找到了一些关于 dplyr 的信息,但我不明白我应该如何使用它。
例如,我有以下数据集(我很抱歉我如何呈现这个,我是 Stackoverflow 的新手)
**Patient_Id** /**Group** /**Age** /**Gender** /**surgery y/n** /**no of surgeries**
1 - 1 - 63 - F - no - 0
1 - 1 - 63 - F - no - 0
1 - 1 - 64 - F - yes - 1
2 - 0 - 60 - M - yes - 2
3 - 1 - 65 - M - no - 0
4 - 0 - 60 - F - no - 0
4 - 0 - 61 - F - yes - 1
4 - 0 - 62 - F - yes - 1
我想制作一个这样的数据框
**Patient_Id** /**Group** /**Age** /**Gender** /**surgery y/n** /**no of surgeries**
1 - 1 - 63,33 - F - yes - 1
2 - 0 - 60 - M - yes - 2
3 - 1 - 65 - M - no - 0
4 - 0 - 61 - F - yes - 2
有谁知道最好使用什么功能?或者如何开始? 先感谢您!
dput 格式的数据。
df1 <-
structure(list(Patient_Id = c(1, 1, 1, 2, 3, 4, 4, 4),
Group = c(1, 1, 1, 0, 1, 0, 0, 0), Age = c(63, 63, 64,
60, 65, 60, 61, 62), Gender = c("F", "F", "F", "M",
"M", "F", "F", "F"), `surgery y/n` = c("no", "no", "yes",
"yes", "no", "no", "yes", "yes"), `no of surgeries` = c(0L,
0L, 1L, 2L, 0L, 0L, 1L, 1L)), row.names = c(NA, -8L),
class = "data.frame")
df2 <-
structure(list(Patient_Id = c(1, 2, 3, 4),
Group = c(1, 0, 1, 0), Age = c("63,33",
"60", "65", "61"), Gender = c("F", "M",
"M", "F"), `surgery y/n` = c("yes", "yes",
"no", "yes"), `no of surgeries` = c(1, 2,
0, 2)), row.names = c(NA, -4L),
class = "data.frame")
我的数据框结构如下:
str(SMARTdata_50j_diagc_2016) 'data.frame':458794 obs。 20 个变量:
$ Groep : 因子 w/ 2 个级别 "0","1": 2 2 2 2 2 1 2 2 2 2 ...
$ Ziekenhuis_Nr : 13 个等级的因子 "1","10","11",..: 2 8 4 11 3 7 10 9 13 6 ...
$ Ziekenhuistype : 因子 w/ 3 个水平 "0","1","2": 2 2 2 2 1 1 2 1 2 3 ...
$ Patient_Id:数字 85550 101414 239946 291650 140558 ...
$ DBC_Id : 数字 181394 230887 448945 524873 251352 ...
$ Diagnose_Code : 因子 w/ 5 个级别 "0","1","2","3",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Zorgtype_Code : 因子 w/ 2 个级别 "0","1": 2 2 2 1 2 2 2 1 1 2 ...
$ Lft_patient_openenDBC : num 50 80 66 60 67 64 54 71 70 76 ...
$ Geslacht : 因子 w/ 2 个级别 "0","1": 1 1 2 2 2 1 1 1 2 1 ...
$ MRI_nee_ja : 因子 w/ 2 个级别 "0","1": 1 1 1 2 1 1 1 1 1 1 ...
$ MRI_Aantal : 数量 0 0 0 1 0 0 0 0 0 0 ...
$ Artroscopie_nee_jaz_jam : 因子 w/ 3 个级别 "0","1","2": 1 1 1 3 1 1 1 1 1 1 ...
$ Artroscopie_aantal : num 0 0 0 1 0 0 0 0 0 0 ...
$ Jaar_openen_DBC : 数量 2016 2017 2018 2017 2017 ...
$ Mnd_openen_DBC : 数字 12 5 6 2 5 8 10 11 1 1 ...
$ Jaar_sluiten_DBC : num 2017 2017 2018 2017 2017 ...
$ Mnd_sluiten_DBC : num 4 9 10 4 9 12 2 3 4 5 ...
$ Aantal_overigeDBC_bijopenen: num 1 1 2 1 0 0 1 0 0 0 ...
$ open_DBC : 'yearmon' num Dec 2016 May 2017 Jun 2018 Feb 2017 ...
$ sluiten_DBC : 'yearmon' num Apr 2017 Sep 2017 Oct 2018 Apr 2017 ...
【问题讨论】:
-
欢迎来到 StackOverflow!请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。
-
为了更好地理解问题,请做一个可重现的例子。
-
@Diego,我很抱歉!我希望我的编辑能让它更清楚,谢谢。
标签: r