【问题标题】:Selecting rows with dataframe$var == c('a', 'b', 'c')使用 dataframe$var == c('a', 'b', 'c') 选择行
【发布时间】:2021-09-22 15:57:40
【问题描述】:

我试图从数据框中选择一些行。

data(Grunfeld, package="AER")

gf = Grunfeld[Grunfeld$firm == c("General Electric",
                                 "General Motors",
                                 "US Steel",
                                 "Westinghouse"), ]

预期的输出应该是 80 行,但我得到了 20 行。

> dim(gf)

[1] 20  5

另一方面,subset() 起作用了。

gf = subset(x = Grunfeld, firm %in% c("General Electric",
                                      "General Motors",
                                      "US Steel",
                                      "Westinghouse"))

> dim(gf)

[1] 80  5

有人知道这里发生了什么吗?

提前致谢。

【问题讨论】:

    标签: r


    【解决方案1】:

    您的第一个命令不起作用,因为您使用了== 而不是%in%;它们执行不同的操作,因此给出不同的结果。尝试将您的第一个子集命令改写为:

    gf = Grunfeld[Grunfeld$firm %in% c("General Electric",
                                     "General Motors",
                                     "US Steel",
                                     "Westinghouse"), ]
    

    如果您好奇的话,已经有答案提供了有关这些运算符之间差异的更多信息(例如 this one)。

    【讨论】:

    • 我不知道这种差异,也许这就是我找不到其他解决方案的原因。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2011-11-22
    • 2011-08-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    相关资源
    最近更新 更多