Как заполнить значение DOWN (автозаполнение), например, заменить NA первым значением в группе, используя data.table в R? - PullRequest
0 голосов
/ 30 апреля 2019

Очень простая и распространенная задача:
Мне нужен эквивалент FILL DOWN (автозаполнение) в Excel в data.table, чтобы

library(data.table)
DT <- fread(
"Paul 32
NA 45
NA 56
John 1
NA 5
George 88
NA 112")

стало

Paul 32
Paul 45
Paul 56
John 1
John 5
George 88
George 112

Спасибо!

Ответы [ 2 ]

2 голосов
/ 30 апреля 2019

Да, лучший способ сделать это - использовать идею @Rui Barradas пакета zoo. Вы можете просто сделать это в одной строке кода с помощью функции na.locf.

library(zoo)
DT[, V1:=na.locf(V1)]

Замените V1 на то, что вы называете своим столбцом после чтения данных с помощью fread. Удачи!

1 голос
/ 02 мая 2019

Например, 2, вы можете рассмотреть возможность использования stats::spline для экстраполяции следующим образом:

DT2[is.na(V2), V2 := 
    as.integer(DT2[, spline(.I[!is.na(V2)], V2[!is.na(V2)], xout=.I[is.na(V2)]), by=.(V1)]$y)]

Выход:

     V1  V2
1: Paul   1
2: Paul   2
3: Paul   3
4: Paul   4
5: John 100
6: John 110
7: John 120
8: John 130

данные:

DT2 <- fread(
"Paul, 1
Paul, 2 
Paul, NA 
Paul, NA 
John, 100
John, 110
John, NA
John, NA")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...