【问题标题】:R: get qualifying rows from data?R:从数据中获取符合条件的行?
【发布时间】:2011-04-27 15:02:18
【问题描述】:

我有一个包含大量数据的 CSV,如下所示:

> test.csv <- read.csv("~/Desktop/stats.csv")
> test.csv
          m                   lvl a     b           c a_pct  b_pct  c_pct   d_pct
1    543557                    2A 13  255  59.6666667  18.8   10.2    1.6     5.1
2    545059                    2A  0   19   4.0000000  15.8   15.8    5.3    10.5

我希望能够使用hist(test.csv$a_pct) 制作类似a_pct 的直方图,但仅限于符合条件的行,如c_pct > 20 或c

【问题讨论】:

    标签: r


    【解决方案1】:

    试试这个:

    hist(test.csv[test.csv$c_pct > 20 | test.csv$c < 200, "a_pct"]) 
    

    两个音符:

    1. data.frame 由 [rows, columns] 索引,您可以在其中指定任何内容以选择特定的行/列。
    2. 您需要使用| 而不是||,因为前者是矢量化的。

    【讨论】:

    • 我在使用字符串时遇到了麻烦。类似:[test.csv$lvl = '2A', "a_pct"] 但失败了。有什么想法吗?
    • 不是字符串。 = 用于赋值,== 用于逻辑比较。阅读help("&lt;")了解更多信息。
    • 这比subset()快吗?
    【解决方案2】:

    一个简单的方法就是:

    with( test.csv, hist( a_pct[ c_pct > 20 ] ) )
    

    【讨论】:

      【解决方案3】:

      你看过 ?subset

      hist(subset(test.csv, c_pct > 20 | c < 200, select=a_pct))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多