使用基本 R 进行过滤和排序不起作用

Ale*_*era 1 r subset dataframe

我有一个表(作为 data.frame),它看起来像这样:

     Var1            Var2 Freq
364    NI           taq  100
363    BB           taq   47
323    AA           ret   46
361    99           taq   33
360    88           taq   69
138    77           esc   111
358    66           taq   26
357    55           taq   23
356    44           taq   20
355    33           taq   143
354    22           taq   105
314   1212          ret   66
352    11           taq   114
Run Code Online (Sandbox Code Playgroud)

我想从 Var1 中删除“NI”并将 Freq 从最高到最低排序。理论上可以用

(df <- df[!df$Var1="NI" & order(df$Freq, decreasing=TRUE),])
Run Code Online (Sandbox Code Playgroud)

但我明白了:

    Var1           Var2 Freq
363    BB           taq   47
323    AA           ret   46
361    99           taq   33
360    88           taq   69
138    77           esc  111
358    66           taq   26
357    55           taq   23
356    44           taq   20
355    33           taq  143
354    22           taq  105
314   1212          ret   66
352    11           taq  114
Run Code Online (Sandbox Code Playgroud)

NI 已删除,但 Freq 未按预期排序。有什么我想念的吗?提前致谢

PS:我正在寻找基本的 R 解决方案。

akr*_*run 5

我们可以filter先行然后做arrange

library(dplyr)
df %>% 
     filter(Var1 != "NI") %>%
      arrange(desc(Freq))
Run Code Online (Sandbox Code Playgroud)

在 中base Rsubset先行然后order根据'Freq'做

df1 <- subset(df, Var1 != "NI")
df1[order(df1$Freq, decreasing = TRUE),]
Run Code Online (Sandbox Code Playgroud)