gpt4 book ai didi

r - 从一组观察创建队列风格的数据框

转载 作者:行者123 更新时间:2023-12-04 22:58:21 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Transpose / reshape dataframe without "timevar" from long to wide format

(8 个回答)


2年前关闭。




我是 R 的新手,有一个简单的问题,因为我仍在学习 R 数据操作/管理的风格。

我有一段时间内基本临床特征(血压、胆固醇等)的观察数据集。每个观察都有一个患者 ID 和日期,但作为单独的行项目输入。像这样的东西:

Patient ID    Date  Blood Pressure
1 21/1/14 120
1 19/3/14 134
1 3/5/14 127

我想转换数据,以便对于给定的变量(例如血压),我有一个数据框,每个患者有一条线,并且按时间顺序在整个时间段内观察到的所有血压值。像这样的东西:
Patient ID BP1 BP2 BP3 
1 120 134 127

我想这样做是因为我希望能够编写代码来选择前三个观察到的血压的平均值。

任何建议或阅读建议将不胜感激。

最佳答案

您可以通过使用多种方法(包括使用 reshape())来 reshape 数据来实现所需的格式设置。 Base R 或 dcast() 中的函数在 reshape2包,但使用聚合形式直接获得答案可能会更容易。这是使用 ddply() 的一种方法来自 plyr包裹:

library(plyr)

df <- read.table(text="id date bp
1 21/1/14 120
1 19/3/14 134
1 3/5/14 127",header=TRUE)

df1 <- ddply(df, .(id), summarize, mean.bp = mean(bp[1:3]))

df1
# id mean.bp
# 1 1 127

当然,如果你真的只是想做你问的事情,你可以这样做:
library(reshape2)

df$bp.id <- ave(df$id,df$id,FUN=function(x) paste0("BP",seq(along=x)))
df2 <- dcast(df[df$bp.id %in% paste0("BP",1:3)], id~bp.id, value.var="bp")

df2
# id BP1 BP2 BP3
# 1 1 120 134 127

关于r - 从一组观察创建队列风格的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34443758/

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