gpt4 book ai didi

r - 将包含相同变量的多列折叠为一列

转载 作者:行者123 更新时间:2023-12-04 10:55:43 25 4
gpt4 key购买 nike

我的数据如下所示:

ID   Diagnosis_1   Diagnosis_2   Diagnosis_3   Diagnosis_4
A 1 0 0 0
A 1 0 0 0
A 1 0 0 0
B 0 1 0 0
C 0 0 0 1
C 0 1 0 0
D 0 0 0 1
E 0 0 1 0
E 0 1 0 0
E 0 0 1 0

Diagnosis_1:Diagnosis_4 都是二进制的,代表诊断的存在(1)或不存在(0)。我想做的是创建一个如下所示的数据框:
ID   Diagnosis
A 1
A 1
A 1
B 2
C 4
C 2
D 4
E 3
E 2
E 3

无论我阅读关于 reshape/reshape2/tidyr 的文档多少次,我都无法理解它们的实现。

我可以使用 dplyr 的 mutate 解决我的问题,但这是实现我的目标的耗时且迂回的方式。

编辑:编辑的数据更真实地代表我的实际数据框。

最佳答案

尝试矩阵乘法:

nc <- ncol(DF)
data.frame(ID = DF$ID, Diagnosis = as.matrix(DF[-1]) %*% seq(nc-1))

给予:
  ID Diagnosis
1 A 1
2 B 2
3 C 2
4 D 4
5 E 3

注:我们使用它作为输入:
Lines <- "ID   Diagnosis_1   Diagnosis_2   Diagnosis_3   Diagnosis_4
A 1 0 0 0
B 0 1 0 0
C 0 1 0 0
D 0 0 0 1
E 0 0 1 0"

DF <- read.table(text = Lines, header = TRUE)

关于r - 将包含相同变量的多列折叠为一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29447325/

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