R中使用多个不等式表达式的子集 Dataframe

ajsxfq5m  于 2023-04-03  发布在  其他
关注(0)|答案(3)|浏览(84)

问题

这个问题是使用多个逻辑条件(特别是严格不等式)子集化R中的 Dataframe (参见herehere)的主题的扩展。
假设我的变量的范围是0到100,我需要创建一个子集,它返回的值在50到100之间,但也要小于25。

# Data
df$var = seq(1:100)

# Desired Subset
df$var[df$var > 50 & df$var < 100 & df$var < 25]

问题

  • 使用基R生成包含多个不等式的子集的最佳方法是什么?
  • 使用非基R包的解决方案是否更优雅?
2nc8po8w

2nc8po8w1#

由于OP要求使用base-R子集方法,并通过查看答案(他们似乎希望OP想要什么),以下内容将有所帮助:

df$var[(df$var > 50 & df$var < 100) | df$var < 25]

如果你想让变量在50到100之间,并且小于25,那么你需要使用|运算符(相当于OR,正如你在其他答案中看到的那样)来获得你想要的子集。

>
#[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 51 52 53 54 
#[29] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 
#[57] 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
gev0vcfq

gev0vcfq2#

您可以为此使用dplyr筛选器。使用“|“for”或“。

library(dplyr)
df %>% 
  filter(var < 25 | (var > 50 & var < 100))
1yjd4xko

1yjd4xko3#

我们可以使用data.table

library(data.table)
 setDT(df)[var < 25 |(var > 50 & var < 100)]

相关问题