【问题标题】:Show all rows where a condition is met显示满足条件的所有行
【发布时间】:2020-10-04 07:02:16
【问题描述】:

我浏览了一些堆栈溢出,但没有找到这个问题的答案,但是我找到了类似情况的答案,并试图将其应用于我的情况,但没有成功。

所以我想查看满足条件 a = b 的所有变量,其中 a 和 b 是数值。

数据:

people = c(1, 2, 3, 4, 5)
a = c(1, 3, 4, 6, 7)
b = c(1, 3, 5, 8, 9)

subset(data, a = b)

但是,这不会导致我的预期输出显示所有满足 a = b 的人。

Output 
people a=b
1       
3

【问题讨论】:

    标签: r count conditional-statements subset


    【解决方案1】:

    R 中的相等运算符是==

    试试

    data <- data.frame(people = c(1, 2, 3, 4, 5),
    a = c(1, 3, 4, 6, 7),
    b = c(1, 3, 5, 8, 9))
    
    subset(data, a == b)
    
        people a b
    [1]      1 1 1
    [2]      2 3 3
    

    【讨论】:

    • 哦,听起来不错。但是我怎么能真正看到它
    【解决方案2】:

    我希望这也有用

    people <- c(1, 2, 3, 4, 5)
    a <- c(1, 3, 4, 6, 7)
    b <- c(1, 3, 5, 8, 9)
    
    df <- as.data.frame(cbind(people,a,b))
    
    #compare "df$a == df$b" returns a vector "TRUE  TRUE FALSE FALSE FALSE"
    #this placed in "df[]" returns all rows with true statements
    
    df[df$a == df$b,]
    

    输出:

      people a b
           1 1 1
           2 3 3
    

    额外:(如果你只想要人物矢量)

    df[df$a == df$b,1]
    
    > 1 2
    

    【讨论】:

      【解决方案3】:

      你也可以让 dplyr 成为你的朋友

      library(dplyr)
      
      data <- data.frame(people = c(1, 2, 3, 4, 5),
      a = c(1, 3, 4, 6, 7),
      b = c(1, 3, 5, 8, 9))
      
      # filter by the desired condition, all "a" that are equal to "b"
      data %>% 
       filter(a == b) # please note the "==", its not a single "="
      
        people a b
      1      1 1 1
      2      2 3 3
      
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-18
        • 2016-12-04
        • 1970-01-01
        • 1970-01-01
        • 2017-09-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多