【发布时间】:2015-07-04 19:33:57
【问题描述】:
所以我想删除数据集中所有空白的单元格。例如,如果我有这样的东西,其中 (..) 代表空白数字:-
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 值,它们会消除整个行/列,这不是我想要的。即使出现 NA,我也想保留列中的所有值,如果有意义的话,我只想将这些值组合在一起。
【问题讨论】:
-
试试
df1[] <- lapply(df1, function(x) c(x[x!='..'], x[x=='..'])) -
我刚刚尝试过,但它并没有删除任何空单元格,所有值仍然保留在原处。谢谢你的帮助
-
我的评论是基于显示的输入数据。正如预期的输出所示,它确实发生了变化。使用
dput即dput(droplevels(head(yourdata)))显示您的数据可能会更好 -
值在那里,但如果说上面有一个空白单元格,它不会将值向上移动一列,如果这有意义吗?因此,如果在单元格 A3 中有一个空白单元格,并且 A4 包含一个值,我希望将 A3 删除,以便 A4 中的值向上移动一个。这就是你写的代码对你端显示的输入数据的作用吗?
-
如果你有真正的 NA,它应该是
c(x[!is.na(NA)], x[is.na(NA)])
标签: r