我想用数据框中的现有值替换缺失值
dim(lookup)
[1] 713 686
`head(test)`
ID DisPrice.1 DisType.1 DisValue.1 DisPrice.2 DisType.2 DisValue.2....
2 1 3.9 % 0 NA <NA> NA.....
225 2 NA <NA> NA 10.9 % 0.....
264 3 NA <NA> NA NA <NA> NA.....
522 4 NA <NA> NA NA <NA> NA.....
732 5 NA <NA> NA NA <NA> NA.....
1182 6 NA <NA> NA NA <NA> NA.....
期望的输出:
ID DisPrice.1 DisType.1 DisValue.1 DisPrice.2 DisType.2 DisValue.2.....
2 1 3.9 % 0 10.9 % 0.....
225 2 3.9 % 0 10.9 % 0.....
264 3 3.9 % 0 10.9 % 0.....
522 4 3.9 % 0 10.9 % 0.....
732 5 3.9 % 0 10.9 % 0.....
1182 6 3.9 % 0 10.9 % 0.....
答案 0 :(得分:2)
一次完成所有列。编写一个复制每行的非缺失值的函数,并将该函数应用于数据框的每一列。
repl <- function(x) rep(x[!is.na(x)], length(x))
data.frame( apply( df, 2, repl) )
其中df是数据框的名称。
答案 1 :(得分:0)
假设您要替换所有NA
和<NA>
s:
# converte all NA´s to the same "type"
test[is.na(test)] <- "<NA>"
fun <- function(x){
if(all(!grepl("NA", x))) return(x) # for ID
rep(x[!grepl("NA", x)], length(x))
}
data.frame(apply(test, 2, fun))
HTH