我正在尝试选择其标签列的值等于'unreg'的行,所以我这样做:
df =df[df$label == 'unreg',]
所以我假设当我得到这个列的值时,它应该只是'ureg',但是:
table(df$label)
显示
20170131 20170224 unreg
0 0 0 1000
为什么它显示频率为0的这两个额外值(20170131和20170224)?
答案 0 :(得分:0)
让我把它写成一个正式的答案:让我们尝试创建一个最小的例子。
library(tidyverse)
library(magrittr)
label <- c("20170131", "20170224", "unreg", "ureg")
df <- data_frame(label)
df %<>%
mutate(label =
factor(label, levels = label) # The vector label, not the column
)
在此之后,你会看到
> class(df$label)
[1] "factor"
> df$labels
[1] 20170131 20170224 unreg ureg
Levels: 20170131 20170224 unreg ureg
让我们按照您的建议尝试执行以下操作:
> df =df[df$labels == 'unreg',]
> table(df$labels)
20170131 20170224 unreg ureg
0 0 1 0
为了摆脱现在不存在的因素水平,我们可以简单地
df %<>% mutate(labels = factor(labels))
然后你看到了
> table(df$labels)
unreg
1
当然,您可能希望重新定义自己的关卡/标签。 如果这不能解决,或者这不是你的想法,请告诉我。