save - unique 和 save unique 的区别
问题描述
解决方案是:
dfrm1[ dfrm1$Name %in% dfrm2$Name , ]
实际上我以前自己尝试过这个,但它似乎没有用,因为我总是检查
unique(dfrm1$name)
它让我知道我仍然有 1000 家不同的公司,而不是预期的 500 家。但现在我使用了
dfrm1[ dfrm1$Name %in% dfrm2$Name , ]
没有否定,因为我想保留 dfrm1$Name 中包含 dfrm2$Name 的所有行。然后我做了以下。我通过执行将我的代码 unique(dfrm1$Name) 保存在新对象 x 中
x <- unique(dfrm1$Name)
当我做
View(x)
我得到了正确的 500 个唯一值,即使只是
unique(dfrm1$Name)
显示在我 Factor w/ 1000 levels "...."
的右上角RStudio
。
有谁知道答案为什么只View(x)
显示正确的值?
解决方案
您正在处理一个分类变量,也称为因子。
data.frame
如果您使用, as.data.frame
, read.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
推荐阅读
- java - 从 JFormattedTextField 中获取原始值
- c# - C# Forms:帮助引用现有类而不是每次都创建新实例
- azure - 列出给定角色定义的权限
- laravel - Laravel 覆盖一个包事件
- swift - 如何使用 swiftui 将文本字段存储到核心数据中
- reactjs - 尝试使用 expo 构建 create-react-app 项目,引发有关 react-native 的错误
- javascript - 猫头鹰轮播未在 Elementor 实时预览中显示
- git - SSMS 18 和源代码控制集成,即。TFS
- angular - 为什么我的 ngrx 操作会导致无限循环?
- python - 创建具有不同类型的嵌套列表的快速方法:numpy、pandas 或列表连接?