gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:48:36 37 4
gpt4 key购买 nike

我有一个像这样的 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/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com