有很多关于替换NA值的帖子.我知道可以用以下内容替换下表/框架中的NA:
x[is.na(x)]<-0
Run Code Online (Sandbox Code Playgroud)
但是,如果我想将其限制为仅某些列,该怎么办?让我给你看一个例子.
首先,让我们从数据集开始.
set.seed(1234)
x <- data.frame(a=sample(c(1,2,NA), 10, replace=T),
b=sample(c(1,2,NA), 10, replace=T),
c=sample(c(1:5,NA), 10, replace=T))
Run Code Online (Sandbox Code Playgroud)
这使:
a b c
1 1 NA 2
2 2 2 2
3 2 1 1
4 2 NA 1
5 NA 1 2
6 2 NA 5
7 1 1 4
8 1 1 NA
9 2 1 5
10 2 1 1
Run Code Online (Sandbox Code Playgroud)
好的,所以我只想将替换限制为列'a'和'b'.我的尝试是:
x[is.na(x), 1:2]<-0
Run Code Online (Sandbox Code Playgroud)
和:
x[is.na(x[1:2])]<-0
Run Code Online (Sandbox Code Playgroud)
哪个不起作用.
我的data.table尝试,在哪里y<-data.table(x),显然永远不会起作用:
y[is.na(y[,list(a,b)]), ]
Run Code Online (Sandbox Code Playgroud)
我想在is.na参数中传递列,但显然不起作用.
我想在data.frame和data.table中执行此操作.我的最终目标是在'a'和'b'中将1:2重新编码为0:1,同时保持'c'的方式,因为它不是逻辑变量.我有一堆列,所以我不想一个接一个地做.而且,我只想知道如何做到这一点.
你有什么建议吗?