R - 仅显示数据帧子集中使用的级别

标签 r dataframe r-factor

我有一个相当大的数据框,其中的因子有很多级别(超过 4,000)。我在同一数据框中还有另一列用作引用,只要该引用列为 NA,我想要找到的是级别的子集。

我使用的第一步是 subsetrows <- which(is.na(mydata$reference))但在那之后我就陷入困境了。我想要类似levels(mydata[subsetrows,mydata$factor])的东西但不幸的是,这个命令向我显示了所有级别,而不仅仅是subsetrows中存在的级别。 。我想我可以在仅包含子集行的数据框之外创建一个新向量,然后删除任何未使用的级别,但是有没有更简单/更干净的方法来执行此操作,可能无需将数据复制到数据框之外?

作为我想要返回的示例,如果我的数据框具有从 A 到 Z 的因子级别,但在我的子集中仅出现 P、R 和 Y,我想要返回级别 P、R 和 Y 的内容。

最佳答案

您当然可以使用base函数来实现这一点。但我个人更喜欢将 dplyr 与链式操作一起使用,如下所示:

library(dplyr)

d %>%
  filter(is.na(ref)) %>%
  select(field) %>%
  distinct()

数据

d <- data.frame(
  field = c("A", "B", "C", "A", "B", "C"),
  ref = c(NA, "a", "b", NA, "c", NA)
  )

关于R - 仅显示数据帧子集中使用的级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28571526/

相关文章:

r - 如何给重复行相同的排名?

r - 证明 ggplot 中的标签和标签透明度

python - Pandas Dataframe 查找与滚动一年相关的数据

r - R 中因子随时间的变化

r - 在R中,如何在不同标签的因子中设置和保留自定义级别?

r - 将 dplyr vars() 元素转换回字符

r - np 包结果的偏回归图

Python/Pandas : How creating an multi-index empty DataFrame, 然后开始填呢?

python - 如何从系列中获取数据帧索引?

r - 如何根据现有因子在新列中添加因子