【问题标题】:Subsetting two factors -- ‘&’ not meaningful for factors对两个因子进行子集化——‘&’对因子没有意义
【发布时间】:2018-03-28 11:45:24
【问题描述】:

我正在尝试按指定条件过滤data.frame 中的两个变量。

我想对两个变量因素进行子集化:a) 评分 b) 位置

我过滤了 rating 变量以选择那些与我相关的评分,即 rating == 0。

现在,我现在想选择只有 Ratings == 0 的“位置”变量,但我无法这样做。我知道它是子集,但无法正确获取代码....但不过滤“位置”变量,我的位置变量将比我的评级变量更多。

我尝试了以下代码,但出现错误:

Unrated_MraLevel1 <- xyz[(MRA == "0" & xyzLocation)]

错误消息:在 Ops.factor(MRA== "0", xyz$Location) 中: ‘&’ 对因子没有意义

【问题讨论】:

  • 将其转换为字符,它应该可以工作,即xyz[(as.character(MRA) == "0" &amp; xyzLocation)] 最好用dput提供一个小的可重现示例
  • 什么是xyzLocation?你没有把它和任何东西比较。你正在做的事情很容易被复制,例如2 &amp; factor(2)。我认为您正在尝试做xyz[xyz$MRA == 0, "Location"]
  • &amp; xyzLocation 只有在 xyzLocation 是布尔变量时才有意义。
  • @DavidArenburg,xyz 是数据框,位置是我的 DF 中的变量之一。基本上考虑到我将评级变量过滤/子集为 == 0,现在我想过滤评级 == 0 的位置变量。这样我最终可以绘制这两个变量。即 - 我只想要他们的评级 ==0 的位置
  • 我已经在评论中提供了代码。

标签: r subset


【解决方案1】:

根据您的描述,这就是您想要的。

示例数据:

dd <- data.frame(location=rep(letters[1:3],each=3),
                 MRA=c(rep(0,3),1:3,c(2,0,0)))

聚合数据以查找所有location 值都等于零的级别:

a <- aggregate(MRA~location,dd,FUN=function(x) all(x==0))

提取要保留的关卡:

keep.levels <- a$location[a$MRA]

对数据集进行子集化:

dd[dd$location %in% keep.levels,]

【讨论】:

    猜你喜欢
    • 2015-08-12
    • 2018-08-07
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多