在table
的帮助文件中,现在写了:
非因子参数a通过因子(a,exclude = exclude)强制执行。 从R 3.4.0开始,注意不要计算排除的值(其中 他们被纳入NA计数,之前)。
这是恼人的。之前,您可以致电table(x, exclude = NULL)
并明确确认NA
值的数量。现在,如果没有,你就不会被告知。观察:
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
请参阅?没有明确确认零NAs。
我真正想要的是旧行为,即:
> 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
工作。是否有明确确认没有NAs的table
替换?
答案 0 :(得分:5)
您可以尝试将useNA参数设置为“always”。在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)的在线帮助文件说
如果表包含NA值的计数,则使用useNA控制。
所以这个论点似乎直接解决了你想做的事情。 exclude参数允许用户直接从表输出中删除因子变量的级别。
table(vec_with_no_nas, exclude="A")
vec_with_no_nas
B C
2 1
哪个比从构造的表对象中删除不需要的级别更清晰。
注意:
在线3.4.0帮助文件提到了同时使用exclude和useNA参数的病态案例,并提供了一个值得进一步探索的示例。
答案 1 :(得分:0)
data.table
可用于快速创建摘要表,并默认包含NA
s。
# Create Dataset
library(data.table)
df=data.table(V1=c('A','B','B',NA),V2=1:4)
df
# V1 V2
# 1: A 1
# 2: B 2
# 3: B 3
# 4: <NA> 4
# Count Table
df[,.N,by=V1]
# V1 N
# 1: A 1
# 2: B 2
# 3: <NA> 1
# Proportion Table
df[,.N/nrow(df),by=V1]
# V1 V1
# 1: A 0.25
# 2: B 0.50
# 3: <NA> 0.25