r - 在 R 中,有没有办法在 data.frame 的整数列中处理 NA,以便在子集化时不包括 NA 值?

标签 r dataframe transformation

我有一个像这样的 data.frame:

(t=structure(list(count = c(NA, 2, NA, NA, NA, 8, NA, NA, NA)), .Names = "count", row.names = c(NA,-9L), class = "data.frame"))
  count
1    NA
2     2
3    NA
4    NA
5    NA
6     8
7    NA
8    NA
9    NA

R 具有 NA 值很棒,但有时它会咬我。我经常忘记它并尝试做这样的子集
> t[t$count>=1,]
[1] NA  2 NA NA NA  8 NA NA NA

并且输出包括所有 NA 行。 (我不喜欢)

经过一个小时的错误搜索,我将代码更改为这个,这就是我想要的( 想象大型数据框 很多非 NA 结果和只有少数“隐藏良好”的 NA):
> t[t$count>=1&!is.na(t$count),]
[1] 2 8

1.
是否有“as.integer”函数的特性,以便我可以执行以下操作:

t[as.integer.EXCLUDE.NA(t$count)>=1,]



我也想在其他 as.xxxx 函数中使用这样的功能。基本上强制 R 停止像统计学家一样思考并以不同的方式对待 NA(例如,像 NULL(我不确定 NULL 会解决我的问题)(这不起作用:t$count[3]<-NULL 出于某种原因)

2.
或者我怎么跑
transform(t, replace all NAs from count columns with 0)

甚至更好
transform(t, replace all NA from all numeric columns with 0 in t)

3.
欢迎任何关于让 R 忘记 NA 的通用评论?

最佳答案

我也不喜欢在设计“[”如何处理 NA 值时所做的选择。当我想使用逻辑测试提取值时,我采用的方法是将逻辑表达式包装在 which 中。 .这会将结果转换为一组数字并且索引成功,而不会拖拽不需要的 NA:

> t[ which(t$count >= 1), ]
[1] 2 8
# Or if you still want a dataframe result
> t[ which(t$count >= 1), , drop=FALSE]
  count
2     2
6     8

我也用 subset因为它以与 which(logical) 相同的方式处理 NA .一个问题是什么时候 which与“-”号一起使用来检索补集。如果集合中没有满足逻辑条件的元素,那么 -which(logical) 中也没有元素。 -形式。所以我只是不使用 -which组合:
> t[ -which(t$count < 1), , drop=FALSE]
[1] count
<0 rows> (or 0-length row.names)
> t[ which(t$count < 1), , drop=FALSE]
[1] count
<0 rows> (or 0-length row.names)

关于r - 在 R 中,有没有办法在 data.frame 的整数列中处理 NA,以便在子集化时不包括 NA 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9537499/

相关文章:

xml - R:将 XML 数据转换为数据框

根据其他数据框中的列名称、ID 号和键值替换数据框中的值

r - 聚合打印不正确的列数

python - pandas 数组索引不足

python - 每次行重复时,向日期时间行添加一年

java - AffineTransform 修改的形状呈现出与预期相反的效果

opengl - 纹理扭曲着色器 : Polar to Rectangular Coordinates

r - 如何使用 R 中的 for 循环将列保存到单独的文件中

r - 不存在分隔符时在 R 中分隔字段

php - 借助 PHP - Image Magick 转换 .SVG 图像