gpt4 book ai didi

r - 从其他变量复制缺失值

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

简单的问题,但我不知道如何执行以下操作。这是我的数据:

ID    Time1    Time2    Time3    Time4
01 23 23 NA NA
02 21 21 21 NA
03 22 22 25 NA
04 29 29 20 NA
05 NA NA 15 22
06 NA NA 11 NA

现在,我想用其他变量中可用的数据替换缺失值 (NA)。重要的是,我需要 r 获取与缺失数据点“最接近”的值。例如,对于 ID 5,Time1 和 Time2 应该是“15”(而不是“22”)。

像这样:

ID    Time1    Time2    Time3    Time4
01 23 23 23 23
02 21 21 21 21
03 22 22 25 25
04 29 29 20 20
05 15 15 15 22
06 11 11 11 11

我试过 ifelse 语句,但没有成功。

谢谢!

最佳答案

使用 data.table 的滚动连接和设置:

library(data.table)
good = as.data.table( which(!is.na(df[-1]), arr.ind = TRUE) )
all = CJ(row = seq(nrow(df)), col = seq(2L, ncol(df)))
good$col = good$col + 1L
good$col_src = good$col

changes = good[all, on = c("row", "col"), roll="nearest"][ col != col_src ]

changes[, {
set(df, i = row, j = col, value = df[[ col_src ]][row])
NULL
}, by=.(col,col_src)]

# based on input from bgoldst's answer
ID 1 2 3 4
1: 01 23 23 23 23
2: 02 21 21 21 21
3: 03 22 22 25 25
4: 04 NA NA NA NA
5: 05 29 29 20 20
6: 06 15 15 15 22
7: 07 11 11 11 11
8: 08 1 1 2 2

我们找到所有要切换的条目,然后通过set引用修改。我不确定 roll="nearest" 如何处理关系,但我确信可以对其进行调整。

关于r - 从其他变量复制缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36724309/

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