取代缺失的价值

时间:2013-08-16 11:11:31

标签: r subset missing-data

我想用数据框中的现有值替换缺失值

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.....

2 个答案:

答案 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