【问题标题】:How to subset dataframe based on specific combination of factors across two columns in R? [duplicate]如何根据 R 中两列的特定因素组合对数据框进行子集化? [复制]
【发布时间】:2021-12-13 01:12:21
【问题描述】:
sp1.col <- c("A","A","A","A","B","B","B","B","C","C","C","C")
sp1.val <- c(1:12)
sp2.col <- c("A","B","C","D","A","B","C","D","A","B","C","D")
sp2.val <- c(1:12)

df <- data.frame(sp1.col, sp1.val, sp2.col, sp2.val)

我想对数据框进行子集化,使 sp1 和 sp2 具有相同的物种名称,并消除所有其他行。

所以最终的数据框应该是这样的

   sp1.col sp1.val sp2.col sp2.val
       A      1       A      1
       B      5       B      5
       C      11      C      11

【问题讨论】:

  • @akrun 道歉。现在更正了
  • 根据您的示例,第二行得到 6 而不是 5 subset(df, sp1.col == sp2.col)

标签: r dataframe if-statement


【解决方案1】:
library(dplyr)

df %>% 
  filter(sp1.col == sp2.col)

【讨论】:

    【解决方案2】:

    我们可以在base R 中使用subset(无需包)

    subset(df, sp1.col == sp2.col)
    

    -输出

      sp1.col sp1.val sp2.col sp2.val
    1        A       1       A       1
    6        B       6       B       6
    11       C      11       C      11
    

    【讨论】:

      【解决方案3】:
      > with(df,df[sp1.col==sp2.col,])
         sp1.col sp1.val sp2.col sp2.val
      1        A       1       A       1
      6        B       6       B       6
      11       C      11       C      11
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-13
        • 2021-10-13
        • 1970-01-01
        • 1970-01-01
        • 2013-08-15
        • 2021-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多