gpt4 book ai didi

r - 列与基线的差异

转载 作者:行者123 更新时间:2023-12-05 01:23:09 24 4
gpt4 key购买 nike

这可能是一个重复的问题,如果是这样的话我不会感到惊讶,

这是我正在处理的数据集的一个例子

ID    Type    Time1     Time2     Time3
1 A1 12.23 NA NA
2 A1 0.35 0.53 NA
2 A2 5.78 NA 10.25
3 A5 NA NA 4.19
4 A3 NA 3.18 7.15
5 A5 10.91 4.56 2.45

我的目标是像这样创建两列 [Delta1, Delta2]

Delta1:此列仅在所有三个值都可用的行中存储 Time2-Time1 中的值之间的差异:Time1、Time2、Time3。例如,最后一行 ID 5 具有所有三个时间的值,时间 1、时间 2、时间 3,因此 Delta1 = 4.56-10.91 = -6.35

Delta2:此列存储 Time2-Time1 或 Time3-Time1 或 Time3-Time2 之间的差异。如果一行没有任意两个时间值,则为0

最终预期输出

ID    Type    Time1     Time2     Time3     Delta1     Delta2
1 A1 12.23 NA NA 0
2 A1 0.35 0.53 NA 0.18
2 A2 5.78 NA 10.25 4.47
3 A5 NA NA 4.19 0
4 A3 NA 3.18 7.15 3.97
5 A5 10.91 4.56 2.45 -6.35 -2.11

非常感谢任何帮助,提前致谢。

最佳答案

df$Delta1 <- ifelse(!is.na(df$Time1) & !is.na(df$Time2) & !is.na(df$Time3),
df$Time2 - df$Time1,
NA)

df$Delta2 <- vapply(seq_len(nrow(df)), \(x){
x = na.omit(c(df$Time3[x], df$Time2[x], df$Time1[x]))
x = x[1] - x[2]
if(is.na(x)) return(0)
return(x)
}, 0)

结果:

> df
ID Type Time1 Time2 Time3 Delta1 Delta2
1 1 A1 12.23 NA NA NA 0.00
2 2 A1 0.35 0.53 NA NA 0.18
3 2 A2 5.78 NA 10.25 NA 4.47
4 3 A5 NA NA 4.19 NA 0.00
5 4 A3 NA 3.18 7.15 NA 3.97
6 5 A5 10.91 4.56 2.45 -6.35 -2.11

关于r - 列与基线的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72823890/

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