【问题标题】:Subsetting data frame based on certain value [duplicate]基于某个值的子集数据框[重复]
【发布时间】:2020-03-13 12:03:49
【问题描述】:

我有一个类似的数据框

set.seed(101)
f=data.frame(a=sample(1:5), b=sample(1:5), c=sample(1:5))

我想删除值大于 3 的所有行和列。 由于其他行/列包含大于 3 的值,它们将被删除。

所以输出只有

1 3 3

我可以单独对行和列进行子集化,然后再做。

【问题讨论】:

  • 我的意思是可以。我正在考虑行和,但无法到达那里

标签: r dataframe


【解决方案1】:

我们可以使用rowSums

f[rowSums(f > 3) == 0, ]

#  a b c
#1 1 1 3

dplyr,我们可以使用filter_all

library(dplyr)
f %>% filter_all(all_vars(. <= 3))

【讨论】:

  • 感谢现在看起来很简单
【解决方案2】:
#Subset for all values <=3 (AND Condition)
f <- subset.data.frame(f, a <= 3 & b <= 3 & c <= 3)

#Subset for min one value <=3 (OR Condition)
f <- subset.data.frame(f, a <= 3 | b <= 3 | c <= 3)

【讨论】:

    【解决方案3】:

    应该这样做:

    library(tidyverse)
    
    f %>% filter((a <= 3) & (b <= 3) & (c <= 3))
    

    参考https://dplyr.tidyverse.org/reference/filter.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-28
      • 2011-12-21
      • 2017-04-06
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多