【问题标题】:How can I use indeces to remove specific values from a dataframe?如何使用索引从数据框中删除特定值?
【发布时间】:2013-11-19 05:26:39
【问题描述】:

我已使用 which() 函数生成索引,这些索引告诉我 9 变量数据帧的变量 x 中的哪些值高于 1024,并告诉我变量 y 中的哪些值高于 768。

现在我想生成一个新的数据帧,其中包含原始数据帧的所有值,which (dataframe$x > 1024)which (dataframe$y > 768 返回的所有值除外

我可以使用哪些函数从旧数据帧减去那些索引值生成新数据帧?

如果我的语言没有标准化为典型的 R 词汇表,我深表歉意,我刚开始使用 R。谢谢。

【问题讨论】:

  • 您可以使用逻辑向量进行子集化。尝试dataframe[dataframe$x <= 1024 & dataframe$y <= 768,],它与dataframe[!(dataframe$x > 1024 | dataframe$y > 768),] 相同。
  • 感谢 Roland,这很有效。您能否告诉我如何获得有关使用逻辑向量进行子集化的更多信息?我应该使用什么 help() 命令来更好地理解这一点?
  • 我已将我的 cmets 转换为答案。您现在可以勾选绿色复选标记。
  • 更多关于子集的文档:?Extractherehere

标签: r subset


【解决方案1】:

您可以使用逻辑向量进行子集化。试试dataframe[dataframe$x <= 1024 & dataframe$y <= 768,],和dataframe[!(dataframe$x > 1024 | dataframe$y > 768),]一样。

阅读introduction to R 会让您受益。

【讨论】:

    【解决方案2】:

    如果逻辑向量对您来说不直观,您可能更喜欢使用subset()。 在你的情况下:

    subset(dataframe, (x > 1024 | y > 768))

    但是,您应该注意 NA 和(子集手册中的 c&p):

    这是一个旨在交互使用的便利功能。对于编程,最好使用像 [ 这样的标准子集函数,特别是参数子集的非标准评估可能会产生意想不到的后果。

    【讨论】:

    • 我试图使用subset() 来完成此操作,但我不确定如何使用这个新生成的子集从原始数据框中删除值。
    • 如果那是你想要排除的值,那么你就反其道而行之:filteredDF <- subset(dataframe, (x <= 1024 & y <= 768)) 逻辑与 Roland 提出的逻辑向量中的逻辑相同。如果您只是想在过滤后保留一些列,您可以添加参数select
    猜你喜欢
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 2021-08-03
    • 2015-04-22
    • 1970-01-01
    • 2018-04-13
    • 2020-08-31
    • 1970-01-01
    相关资源
    最近更新 更多