使用 dplyr 在 R 中过滤因子水平
Filter factor levels in R using dplyr
这是我的数据框 DF 的 glimpse():
Observations: 221184
Variables:
$ Epsilon (fctr) 96002.txt, 96002.txt, 96004.txt, 96004.txt, 96005.txt, 960...
$ Value (int) 61914, 61887, 61680, 61649, 61776, 61800, 61753, 61725, 616...
我想使用 dplyr 过滤(删除)Epsilon 前两个级别的所有观察结果。
我的意思是:
DF %>% filter(Epsilon != "96002.txt" & Epsilon != "96004.txt")
但是,我不想使用字符串值(即“96002.txt”和“96004.txt”)而是级别顺序(即 1 和 2),因为它应该是独立于级别值的一般说明。
您可以轻松地将 factor
转换为 integer
,然后对其使用条件。只需将 filter
语句替换为:
filter(as.integer(Epsilon)>2)
更一般地说,如果您有一个索引级别的向量要消除,您可以尝试:
#some random levels we don't want
nonWantedLevels<-c(5,6,9,12,13)
#just the filter part
filter(!as.integer(Epsilon) %in% nonWantedLevels)
这是我的数据框 DF 的 glimpse():
Observations: 221184
Variables:
$ Epsilon (fctr) 96002.txt, 96002.txt, 96004.txt, 96004.txt, 96005.txt, 960...
$ Value (int) 61914, 61887, 61680, 61649, 61776, 61800, 61753, 61725, 616...
我想使用 dplyr 过滤(删除)Epsilon 前两个级别的所有观察结果。
我的意思是:
DF %>% filter(Epsilon != "96002.txt" & Epsilon != "96004.txt")
但是,我不想使用字符串值(即“96002.txt”和“96004.txt”)而是级别顺序(即 1 和 2),因为它应该是独立于级别值的一般说明。
您可以轻松地将 factor
转换为 integer
,然后对其使用条件。只需将 filter
语句替换为:
filter(as.integer(Epsilon)>2)
更一般地说,如果您有一个索引级别的向量要消除,您可以尝试:
#some random levels we don't want
nonWantedLevels<-c(5,6,9,12,13)
#just the filter part
filter(!as.integer(Epsilon) %in% nonWantedLevels)