gpt4 book ai didi

r - 转换数据框,同时填充缺失值

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

我有数据框

data<-data.frame(id=c("A","A","B","B"), day=c(5,6,1,2), duration=c(12,1440,5,6), obs.period=c(60, 60,100,100))

显示受试者 ID、事件发生日期、事件持续时间和受试者的观察期

我想将数据集转换为显示每个对象的整个观察期(观察的所有天数),同时添加零作为未观察到事件的天数的持续时间值

对于上面的数据集,这将是这样的:

id  day duration    obs.period
A 1 0 60
A 2 0 60
A 3 0 60
A 4 0 60
A 5 12 60
A 6 1440 60
A 7 0 60
A 8 0 60
.
.
.
A 60 0 60
B 1 5 100
B 2 6 100
B 3 0 100
B 4 0 100
.
.
.
.
B 100 0 100

有什么想法吗?

最佳答案

这是使用 plyr 包的一种方法。首先,创建一个函数将数据扩展为适当的行数。然后,使用原始数据的持续时间信息索引到新的 data.frame 中。最后,使用 ddply() 调用此函数并对 id 变量进行分组。

require(plyr)
FUN <- function(x){
dat <- data.frame(
id = x[1,1]
, day = seq_len(x[1,4])
, duration = 0
, obs.period = x[1,4]
)

dat[dat$id == x$id & dat$day == x$day, "duration"] <- x$duration
return(dat)
}


ddply(data, "id", FUN)

id day duration obs.period
1 A 1 0 60
2 A 2 0 60
3 A 3 0 60
4 A 4 0 60
5 A 5 12 60
6 A 6 1440 60
...
61 B 1 5 100
62 B 2 6 100
63 B 3 0 100
...
160 B 100 0 100

关于r - 转换数据框,同时填充缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7545619/

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