gpt4 book ai didi

r - 在 R 中将分组的行数据转换为列

转载 作者:行者123 更新时间:2023-12-02 07:35:29 25 4
gpt4 key购买 nike

我有以下格式的数据 -

ID EVID ADMIT   DC      DRG  CLIN_C PRIN_DX  
1 AA 1/1/13 2/1/13 ABC 1A234 Y
1 AA 1/1/13 2/1/13 ABC 1B345 N
1 AA 1/1/13 2/1/13 ABC 1C234 N
1 AA 1/1/13 2/1/13 ABC 1234C N

1 BB 3/1/13 2/15/13 EEE C12C3 Y
1 BB 3/1/13 2/15/13 EEE 1B345 N
1 BB 3/1/13 2/15/13 EEE 1C234 N
1 BB 3/1/13 2/15/13 EEE 987D N

2 CC 3/1/13 2/15/13 EEE C12C3 Y
2 CC 3/1/13 2/15/13 EEE 546X N
2 CC 3/1/13 2/15/13 EEE 1C234 N
2 CC 3/1/13 2/15/13 EEE 1234C N

我想要以下格式的数据:

ID EVID ADMIT   DC      DRG  PRIN_DX 1B345  1C234 1234C 987D 546X  
1 AA 1/1/13 2/1/13 ABC 1A234 1 1 1 0 0
1 BB 3/1/13 2/15/13 EEE C12C3 1 1 0 1 0
2 CC 3/1/13 2/15/13 EEE C12C3 0 1 0 0 1

如果可能的话,我想用 R 来做这件事。我试过 reshape/reshape2,但找不到处理分组行的明显方法 - 将分组行拆分为列,然后聚合剩余的行。

数据是数百次住院的记录 - 如此之大是合理的。

最佳答案

假设 DF 是输入数据框,试试这个:

library(reshape2)

FUN <- function(i) with(DF[i, ], CLIN_C[PRIN_DX == "Y"])
DF$PRIN_DX <- ave(1:nrow(DF), DF$ID, DF$EVID, FUN = FUN)

dcast(DF, ... ~ CLIN_C, fun = length, value.var = 1)

给出:

  ID EVID  ADMIT      DC DRG PRIN_DX 1234C 1A234 1B345 1C234 546X 987D C12C3
1 1 AA 1/1/13 2/1/13 ABC 1A234 1 1 1 1 0 0 0
2 1 BB 3/1/13 2/15/13 EEE C12C3 0 0 1 1 0 1 1
3 2 CC 3/1/13 2/15/13 EEE C12C3 1 0 0 1 1 0 1

更新:简化

关于r - 在 R 中将分组的行数据转换为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16951908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com