在R中以宽格式组合变量

在R中以宽格式组合变量,r,dataframe,R,Dataframe,我有一个数据框架,目前格式广泛,有干预前后的问卷分数。848名患者至少有一份问卷。我想看看数据,比较一下从干预前到干预后的得分变化情况。然而,我很挣扎,因为这些数据格式广泛,而且就每位患者的问卷数量而言,这些数据并不统一。有一个变量列出了问卷的实例,问卷的值是另一个变量 下面是它当前外观的示例: a=c('instance1','total1','instance2', 'total2', 'instance3', 'total3', 'instance4','total4', 'instan

我有一个数据框架,目前格式广泛,有干预前后的问卷分数。848名患者至少有一份问卷。我想看看数据,比较一下从干预前到干预后的得分变化情况。然而,我很挣扎,因为这些数据格式广泛,而且就每位患者的问卷数量而言,这些数据并不统一。有一个变量列出了问卷的实例,问卷的值是另一个变量

下面是它当前外观的示例:

a=c('instance1','total1','instance2', 'total2', 'instance3', 'total3', 
'instance4','total4', 'instance5','total5')
b=c('postop2', '5', 'postop1', '7', NA, NA, 'preop', '10', NA, NA)
c=c(NA, NA, 'preop', '3', NA, NA, 'postop1', '4', 'postop2', '3')
data.frame(rbind(a,b,c))
共有848行问卷数据

我需要计算从术前到术后问卷的差异。重新组织这些数据以便获得这些值的最佳方法是什么?我很挣扎,因为848名患者之间的实例并不一致


谢谢你的帮助

不确定这是否是您想要的,但请尝试此数据表方法:

library(data.table)

DT <- data.table(rbind(b,c))
names(DT) <- a

DT2 <- melt(DT, measure = patterns("^instance", "^total"), value.name = c("instance", "total"))

DT2

    variable instance total
 1:        1  postop2     5
 2:        1       NA    NA
 3:        2  postop1     7
 4:        2    preop     3
 5:        3       NA    NA
 6:        3       NA    NA
 7:        4    preop    10
 8:        4  postop1     4
 9:        5       NA    NA
10:        5  postop2     3
库(data.table)

DT不确定这是否是您所追求的,但请尝试以下数据表方法:

library(data.table)

DT <- data.table(rbind(b,c))
names(DT) <- a

DT2 <- melt(DT, measure = patterns("^instance", "^total"), value.name = c("instance", "total"))

DT2

    variable instance total
 1:        1  postop2     5
 2:        1       NA    NA
 3:        2  postop1     7
 4:        2    preop     3
 5:        3       NA    NA
 6:        3       NA    NA
 7:        4    preop    10
 8:        4  postop1     4
 9:        5       NA    NA
10:        5  postop2     3
库(data.table)

DT如果你看你的例子,我假设列名是第一行,而不是'X1',X2',等等。是的,列名是第一行如果你看你的例子,我假设列名是第一行,而不是'X1',X2',等等。是的,列名是第一行jeppe,这对样本数据有效。然而,当我把它应用到我的数据中时,它只会得到一些实例的总数,所以当我去计算平均值时,它只会返回平均值,例如“NA”和“postop2”。这可能是长格式融合的问题吗?任何关于从哪里开始寻找的建议都将不胜感激。谢谢。可能是因为你的数据集中有NA。试试DT2我试过了,但它忽略了整个数据帧/数据表。当我去计算平均值时,它给出了大多数输出的NaN,当我知道术前实例1术后1 NaN 2术后2 NaN 3术后3 NaN 4术后4+16.0000 5术前NaN 6 14.2414这可能是许多不同的原因造成的。你能做一个可复制的例子吗?杰普,这对样本数据有效。然而,当我把它应用到我的数据中时,它只会得到一些实例的总数,所以当我去计算平均值时,它只会返回平均值,例如“NA”和“postop2”。这可能是长格式融合的问题吗?任何关于从哪里开始寻找的建议都将不胜感激。谢谢。可能是因为你的数据集中有NA。试试DT2我试过了,但它忽略了整个数据帧/数据表。当我去计算平均值时,它给出了大多数输出的NaN,当我知道术前实例1术后1 NaN 2术后2 NaN 3术后3 NaN 4术后4+16.0000 5术前NaN 6 14.2414这可能是许多不同的原因造成的。你能举一个可复制的例子吗?