所以我想删除数据集中空白的所有单元格。例如,如果我有这样的东西,其中(..)代表空白数字: -
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,我只想将值组合在一起,如果这是有意义的。
答案 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