0

我遇到了一个问题,给你打电话寻求帮助(我遇到了类似的问题,但找不到我真正需要的东西,虽然它看起来很简单):我有一个来自 50 名患者的原始数据框,有 3 个时间点(下面的可重现代码) 和一个名为“Ht”的感兴趣变量。我的目标是研究这 3 个时间点之间的 Ht 变化,例如根据另一个变量(例如这里的数字变量“A”)。

    id  <-  rep(c(seq(1,50,1)),3)
    time  <- factor(rep(c("day1", "day2", "day3"), c(50,50,50)), levels=c("day1", "day2", "day3"), labels=c("day1", "day2", "day3"), ordered=TRUE)
    Ht  <- rnorm(150, mean=30, sd=3)
    A  <- rnorm(150, mean=7, sd=10)
    dfrm  <-  cbind (id,time,Ht,A)

    > head(dfrm)
      id time       Ht          A
 [1,]  1    1 28.64048 11.1595852
 [2,]  2    1 28.30068  4.2925773
 [3,]  3    1 32.51943 21.2013316
 [4,]  4    1 30.66561  0.6980816
 [5,]  5    1 28.92749 22.2756818
 [6,]  6    1 33.82217 14.2877789

我想研究第 1 天和第 2 天之间、第 2 天和第 3 天之间以及第 1 天和第 3 天之间的 Ht 值之间的差异。但我想将这些计算与 ID 一起插入单个数据值和其他变量。我不知道建立一个新的data.frame是否更好,但我想是的。有人可以建议一种简单的方法吗?非常感谢您提前。丹尼斯

4

1 回答 1

2
 library(plyr)
 dfrm <- data.frame(dfrm)
 out <- ddply(dfrm, .(id), function(x) {
        x <- x[order(x$time),]
        x$diff <- c(NA, diff(x$Ht))
        x$diff2 <- c(NA, NA, diff(x$Ht, 2))
        x
    })
于 2013-08-10T13:25:48.173 回答