【问题标题】:Simple dataframe query in R [closed]R中的简单数据框查询[关闭]
【发布时间】:2015-09-21 16:52:46
【问题描述】:

在 R 中,如何以与查询 SQL 表类似的方式查询数据帧?

例如,如果我将上述 .csv 加载到 RStudio 中,我如何创建一个函数,让我输入特定的颜色、性别和年轻/老年,以便检索数据框中列出的确切值(例如函数输入是“blue, male, old”,输出是“29”)?

【问题讨论】:

  • 到目前为止您尝试过什么?与其让社区为您编写代码,不如展示您已经尝试过和失败的内容,以便我们可以帮助调整您的代码。还要确保显示您的数据的 sn-p,以便我们可以使用。
  • 请不要发布数据截图。您可以使用 dput(data) 并复制粘贴它的输出。希望帮助您的人应该能够以最少的努力加载您的数据。手动输入数据并非易事。
  • 您可能需要考虑询问此处涉及的更高级别的问题。下面的 OlivierDeMeulder 的回答几乎是您通常在 R 中执行此操作的方式,但您可以通过询问如何解决您试图解决的问题来获得更好的结果。为什么要查询单个元素?
  • 非常感谢您的帮助,Heroka。

标签: r


【解决方案1】:

我们开始了——再次感谢 Barranka 和 Olivier 的帮助。

subset(df, (Gender == 'Male' & Color == 'Blue'), select=c(Old))

【讨论】:

    【解决方案2】:

    您可以安装一个软件包来执行此操作。

    或者,您可以使用内置的子集函数。

    例如(如果 df 是您的数据框):

    subset(df, (Gender == 'Male' & Color == 'Blue'))
    

    【讨论】:

    • 谢谢,Olivier -- 您的函数输出整行值而不是单个值。我在下面调整了您的代码,但是也没有输出单个值。子集(df$Old,(性别 == '男性' & 颜色 == '蓝色'))
    【解决方案3】:

    如何以与查询 SQL 表类似的方式查询数据帧?

    如果您熟悉 SQL 查询,R 可以帮助您!看看sqldf package。您可以像操作 SQL 数据库(更准确地说,是 SQLite 数据库)中的表一样操作数据框

    对于您的示例(假设您的数据存储在名为 df 的数据框中):

    sqldf("select Old from df where Color = 'Blue' and Gender = 'Male'")
    

    当然,R 有很多做事的方法,所以你可能想检查一下The Quick-R tutorial: Subsetting data

    【讨论】:

    • 谢谢你,Barranka,正是我想要的。
    • @SidneyCarton 如果它解决了您的问题,请接受它
    • 感谢 Herka,我的声誉刚刚减半(显然是因为没有听说过“dput”),这意味着我不再能够按“这个答案很有用”来获得有用的答案。我怀疑我对自己的问题发表评论的能力接下来会被取消?
    • 现在解决您的问题还为时不晚。
    • @SidneyCarton 如果您因为人们告诉您可以做得更好的事情而抱怨,那么您必须问自己是否值得帮助您。 Please read this article。 (顺便说一句,你有 4 票反对,这意味着至少有 4 人认为你可以改进你的问题)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 2012-01-03
    相关资源
    最近更新 更多