【问题标题】:How to filter my dataframe in R?如何在 R 中过滤我的数据框?
【发布时间】:2017-12-30 14:59:13
【问题描述】:

这是我的数据框:

                  df1
Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10
1    1    1    1    1    1    1    1    1    1
1   -1    1    1    1    1    1    1    1    1
1    NA   1    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1

我正在尝试制作第二个数据框 df2,以过滤其中的行

df1$Col2<0==TRUE

所以 df2 看起来像这样

                  df2
Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10
1   -1    1    1    1    1    1    1    1    1

谢谢!

更新:Wen 的评论有效,但是我的数据框有额外的 40,000 行只是说 NA。知道我可以做些什么来摆脱这些行吗?

【问题讨论】:

  • df2=df1[df1$Col2&lt;0,]
  • 好的,但由于某种原因,我得到了 40,000 行。知道我能做些什么来摆脱这些吗?
  • df2=df1[df1$Col2&lt;0&amp;!is.na(df1$Col2),]
  • 它需要与df2=df1[!is.na(df1$Col2) &amp; df1$Col2&lt;0,]相反,即您要首先检查NA
  • 温的第二条评论似乎效果很好。为什么我需要先检查 NA?

标签: r dataframe filtering


【解决方案1】:

你可以使用子集

df2 <- subset(df1, subset = (Col2 <0))

【讨论】:

    【解决方案2】:
    df <- read.table(header = TRUE, text = 
                       "Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10
                     1    1    1    1    1    1    1    1    1    1
                     1   -1    1    1    1    1    1    1    1    1
                     1    NA   1    1    1    1    1    1    1    1
                     1    1    1    1    1    1    1    1    1    1
                     1    1    1    1    1    1    1    1    1    1", stringsAsFactors = FALSE)
    

    您可以尝试dplyr 包中的filter

    library(dplyr)
    filter(df, Col2 < 0)
    

    【讨论】:

      猜你喜欢
      • 2018-09-17
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 2017-01-03
      • 2022-10-17
      • 2021-11-22
      相关资源
      最近更新 更多