【问题标题】:Subset rows from similar factors with unequal levels来自具有不相等水平的相似因子的子集行
【发布时间】:2017-10-10 19:39:44
【问题描述】:

我很难根据特定条件从数据框中子集行。

我有一个包含因子的 2 列的简单数据框。 我想保留 Column1 的因子等于 Column2 的因子的行。

我的问题是第 1 列的因子比第 2 列的因子有更多的水平。 我愿意:

subset(df , df$Col1==df$Col2)

但它告诉我因素没有相同的水平。我听说 droplevels()dropsubset 函数一起使用。

任何帮助表示赞赏。谢谢!

【问题讨论】:

  • 使用as.character将这些列转换为字符向量。

标签: r


【解决方案1】:

这个怎么样:

library(tidyverse)
df<-data.frame(f1=factor(sample(1:4,100,TRUE)),
               f2=factor(sample(1:3,100,TRUE)))
subdf<-filter(df, as.character(f1)==as.character(f2))
subdf
   f1 f2
1   1  1
2   3  3
3   3  3
4   3  3
5   3  3
6   2  2
7   3  3
8   2  2
9   1  1
10  2  2
11  1  1
12  1  1
13  2  2
14  2  2
15  3  3
16  3  3
17  1  1
18  1  1
> str(subdf)
'data.frame':   18 obs. of  2 variables:
 $ f1: Factor w/ 4 levels "1","2","3","4": 1 3 3 3 3 2 3 2 1 2 ...
 $ f2: Factor w/ 3 levels "1","2","3": 1 3 3 3 3 2 3 2 1 2 ...

【讨论】:

    猜你喜欢
    • 2016-06-06
    • 2017-11-07
    • 1970-01-01
    • 2017-06-12
    • 2014-10-30
    • 2013-10-12
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多