r - 包含 R > 3.4.0 中的显式 NA 的表

标签 r na tidyverse

编辑:接受的答案帮助我的眼睛掉下来了;这种变化是一种改进,毕竟并不烦人。

table 的帮助文件中,现在写成:

Non-factor arguments a are coerced via factor(a, exclude=exclude). Since R 3.4.0, care is taken not to count the excluded values (where they were included in the NA count, previously).



这很烦人。之前,您可以调用table(x, exclude = NULL)并明确确认 NA 的数量值(value)观。现在,如果没有,你不会被告知。观察:
vec_with_no_nas <- c("A", "B", "B", "C")
vec_with_nas <- c("A", "B", NA, "C")

table(vec_with_no_nas)
table(vec_with_no_nas, exclude = NULL)

table(vec_with_nas)
table(vec_with_nas, exclude = NULL)

这给出了输出:
> table(vec_with_no_nas)
vec_with_no_nas
A B C 
1 2 1 
> table(vec_with_no_nas, exclude = NULL)
vec_with_no_nas
A B C 
1 2 1 

看?没有明确确认零 NA。

我真正想要的是类似于旧行为的东西,即:
> table(vec_with_no_nas, exclude = NULL)
vec_with_no_nas
A B C <NA>
1 2 1 0

FWIW,如果向量确实有 NA 值,table(x, exclude = NULL)会告诉你:
> table(vec_with_nas)
vec_with_nas
A B C 
1 1 1 

> table(vec_with_nas, exclude = NULL)
vec_with_nas
   A    B    C <NA> 
   1    1    1    1 

我在基地和 tidyverse 工作.有上门服务table将明确确认没有 NA 的替代品?

最佳答案

您可以尝试将 useNA 参数设置为“始终”。在 R 3.2.5 中,

table(vec_with_no_nas, useNA="always")

添加一个 NA 列,即使不存在 NA。
vec_with_no_nas
   A    B    C <NA> 
   1    2    1    0 

3.4.0(和 3.2.5)的在线帮助文​​件说

useNA controls if the table includes counts of NA values.



所以这个论点似乎直接解决了你想做的事情。 exclude 参数允许用户直接从表输出中删除因子变量的级别。
table(vec_with_no_nas, exclude="A")
vec_with_no_nas
B C 
2 1 

这比从构造的表对象中删除不需要的级别更干净。

笔记:
在线 3.4.0 帮助文件提到了同时使用 exclude 和 useNA 参数的病态案例,还提供了一个可能值得进一步探索的示例。

关于r - 包含 R > 3.4.0 中的显式 NA 的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44803004/

相关文章:

r - 将多个组合矩阵合并在一起

r - 当我运行标准偏差时获得 "NA"

r - 如何根据 R 中列中的值组合排除行?

r - 改变数据帧并进行部分字符串匹配

r - 使用 dygraphs 包在 R 中创建条形图

r - 正态分布和对数正态分布的均值和标准差

r - 如何用 NA 替换 data.frame 中不等于随机选择的值的列中的值?

r - 在 R 中编写一个包含 if/else 语句和 rowSums() 的函数,定义如何处理 NA

r - 计算两个事件之间的时间差,同时忽略不匹配的事件

R保存ggplot pdf时出错