仅删除R中的空白单元格(不是整行或列)

时间:2015-03-04 11:48:49

标签: r

所以我想删除数据集中空白的所有单元格。例如,如果我有这样的东西,其中(..)代表空白数字: -

1 10 .. 4
.. 9 10 8
14 8 12 16

我希望能够移除空白单元格,以便产生以下结果: -

1 10 10 4
14 9 12 8
   8    16

因此即使列长度不相同,它基本上会删除值之间的所有空白单元格并将它们全部拉到一起。我会在excel中执行此操作,但我的数据集长度为6000 x 6000并且包含很多空白单元格,而excel无法处理这些空白单元格,所以我认为它可以通过R更快地处理。

我已经看过用NA替换空字符串然后执行na.omit等的方法,但如果它只包含一个NA值,它们会消除整个行/列,这不是我的意思想。我想保留列中的所有值,即使出现NAs,我只想将值组合在一起,如果这是有意义的。

1 个答案:

答案 0 :(得分:3)

如果您的data.frame名为df,那么:

df[df == ".."] <- NA

为了获得NA s,那么:

func<-function(i){
  x<-as.numeric(as.character(df[,i][!is.na(df[,i])]))
  xna<-as.numeric(as.character(df[,i][is.na(df[,i])]))
  newx<-c(x,xna)
}

do.call(cbind,lapply(1:length(df[1,]),func))

> do.call(cbind,lapply(1:length(df[1,]),func))
     [,1] [,2] [,3] [,4]
[1,]    1   10   10    4
[2,]   14    9   12    8
[3,]   NA    8   NA   16