将 R 中选定列中的所有 NA 替换为 FALSE
我有一个类似于这个的问题,但我的数据集是更大一些:50 列,其中 1 列作为 UID,其他列带有 TRUE
或 NA
,我想将所有 NA
更改为 假
,但是我不想使用显式循环。
plyr 能做到这一点吗?谢谢。
更新 #1
感谢您的快速回复,但是如果我的数据集如下所示:
df <- data.frame(
id = c(rep(1:19),NA),
x1 = sample(c(NA,TRUE), 20, replace = TRUE),
x2 = sample(c(NA,TRUE), 20, replace = TRUE)
)
我只想处理 X1
和 X2
,该怎么办?
I have a question similar to this one, but my dataset is a bit bigger: 50 columns with 1 column as UID and other columns carrying either TRUE
or NA
, I want to change all the NA
to FALSE
, but I don't want to use explicit loop.
Can plyr
do the trick? Thanks.
UPDATE #1
Thanks for quick reply, but what if my dataset is like below:
df <- data.frame(
id = c(rep(1:19),NA),
x1 = sample(c(NA,TRUE), 20, replace = TRUE),
x2 = sample(c(NA,TRUE), 20, replace = TRUE)
)
I only want X1
and X2
to be processed, how can this be done?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
如果您想替换变量的子集,您仍然可以使用 is.na(*) <- 技巧,如下所示:
IMO 使用临时变量使逻辑更容易理解:
If you want to do the replacement for a subset of variables, you can still use the
is.na(*) <-
trick, as follows:IMO using temporary variables makes the logic easier to follow:
tidyr::replace_na
出色的功能。这是一个非常棒的快速修复方法。唯一的技巧是列出要更改的列。
tidyr::replace_na
excellent function.This is such a great quick fix. the only trick is you make a list of the columns you want to change.
尝试使用此代码:
更新以获得另一个解决方案。
Try this code:
UPDATED for an another solution.
您可以使用
gdata
包中的NAToUnknown
函数You can use the
NAToUnknown
function in thegdata
package使用
dplyr
,您还可以这样做,与仅使用
replace()
相比,它的可读性稍差,但更通用,因为它允许选择列被改造。如果您想在某些列中保留 NA,但想删除其他列中的 NA,则此解决方案尤其适用。With
dplyr
you could also doIt is a bit less readable compared to just using
replace()
but more generic as it allows to select the columns to be transformed. This solution especially applies if you want to keep NAs in some columns but want to get rid of NAs in others.一种选择是使用
for
循环。基准
for
循环比第二个 Hong Ooi 快大约 3 倍,并且使用最少的内存。An option would be to use a
for
loop.Benchmark
The
for
-loop is about 3 times faster than Hong Ooi the second and uses the lowest amount of memory.