有很多关于替换NA值的帖子.我知道可以用以下内容替换下表/框架中的NAs:

x[is.na(x)]<-0

但是,如果我想把它限制在某些列上呢?让我给你举个例子.

首先,让我们从一个数据集开始.

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))

它给出:

    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

好的,我只想把替换限制在"a"和"b"列.我的try 是:

x[is.na(x), 1:2]<-0

以及:

x[is.na(x[1:2])]<-0

这是行不通的.

我的数据.表try ,其中y<-data.table(x),显然永远不会起作用:

y[is.na(y[,list(a,b)]), ]

我想通过is内部的列.这是一个争论,但显然是行不通的.

我想在一个数据模型中这样做.框架和数据.桌子我的最终目标是重新编码"a"和"b"中的1:2到0:1,同时保持"c"不变,因为它不是逻辑变量.我有很多专栏,所以我不想一个接一个地写.我只是想知道怎么做.

你有什么建议吗?

推荐答案

你可以做:

x[, 1:2][is.na(x[, 1:2])] <- 0

或者更好(IMHO),使用变量名:

x[c("a", "b")][is.na(x[c("a", "b")])] <- 0

在这两种情况下,1:2c("a", "b")都可以被预定义的向量替换.

R相关问答推荐

使用long()在dØr中过滤后获取元素数量

替换收件箱的子集(行和列)

如何判断R中一列的值是否在所有其他列中重复?

是否有R函数来判断一个组中的所有值是否与另一个组中的所有值相同?

按块将载体转换为矩阵-reshape

带有叠加饼图系列的Highmap

有没有一种方法可以从函数中创建一个值的列表,然后将这些值变成R中的直方图?我一直觉得不行

如何在kableextra调用cell_spec()中忽略NA?

S用事件解决物质平衡问题

计算时间段的ECDF(R)

在ggplot中为不同几何体使用不同的 colored颜色 比例

在R函数中使用加号

R -在先前group_by级别汇总时获取最大大小子组的计数

如何使用前缀作为匹配来连接数据帧?

如何计算每12行的平均数?

使用列中的值来调用函数调用中应使用的其他列

创建在文本字符串中发现两个不同关键字的实例的数据框

向R中的数据帧添加一列,该列统计另一列中每个唯一值的二进制观测值的数量

如何将宽格式的患者信息数据高效地转换为患者计数的时间序列?

如何使用循环从R中的聚合函数创建列,而不会在名称中给出&q;$&q;?