唯一值和保存唯一值之间的区别



解决方案是:

dfrm1[ dfrm1$Name %in% dfrm2$Name , ]

我之前实际上自己尝试过这个,但它似乎不像我一直检查的那样有效

unique(dfrm1$name) 

它让我回想起我仍然有一千家不同的公司,而不是预期的500家。但现在我用了

dfrm1[ dfrm1$Name %in% dfrm2$Name , ] 

没有否定,因为我想保留 dfrm1$Name 中包含 dfrm2$Name 的所有行。然后我做了以下工作。我通过

x <- unique(dfrm1$Name)

当我这样做时

View(x) 

我得到了正确的 500 个唯一值,即使只是

unique(dfrm1$Name)

RStudio的右上角向我显示Factor w/ 1000 levels "...."

有谁知道为什么只有View(x)显示正确值的答案?

您正在处理一个分类变量,也称为因子。

如果使用data.frameas.data.frameread.table...无需显式设置stringsAsFactors=FALSE.这可以解释为什么你必须处理这种数据类型,而你似乎不愿意。

来自factor向量的元素可以采用其levels属性给出的有限数量的值。当您与值一起打印unique(dfrm1$name)时,将显示这些级别。

当您从factor向量中删除项目时,默认情况下它会保留所有级别,包括不再描述矢量任何元素的级别。

另请参阅?droplevels

要将factor转换为character,请使用as.character

请参阅以下示例:

x <- factor(c("a","b"),levels = c("a","b","c"))
x # same output for unique(x)
# [1] a b
# Levels: a b c
levels(x)
# [1] "a" "b" "c"
length(x)
# [1] 2
length(levels(x))
# [1] 3
as.character(x)
# [1] "a" "b"
levels(as.character(x))
# NULL

最新更新