-2

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

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

2 回答 2

2

一口气完成所有专栏。编写一个函数来复制每一行的非缺失值,并将该函数应用于数据框的每一列。

repl <- function(x) rep(x[!is.na(x)], length(x))
data.frame( apply( df, 2, repl) )

其中 df 是数据框的名称。

于 2013-08-16T11:58:57.313 回答
0

假设您要替换所有NAs 和<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

于 2013-08-16T12:31:14.200 回答