【问题标题】:Drop several factor levels in data frame in R在R中的数据框中删除几个因子级别
【发布时间】:2012-11-30 15:07:54
【问题描述】:

我需要从 R 中的数据框中删除几个因子级别。 使用此question 中提供的解决方案,我可以摆脱其中一个,但是... 是否可以一次移除多个因子水平?

我想出了这段代码,根据需要删除的因素多次设置子集...

dino <- read.csv('/home/maxim/onset.csv', header=TRUE)
dino <- subset(dino, onset != "QT")
dino <- subset(dino, onset != "")
table(droplevels(dino)$onset)

在我的情况下它工作正常,但我想知道是否有人知道更直接的方法。 (顺便说一句,我对 R 不是很精通……)

【问题讨论】:

  • subset(dino, ! onset %in% c("QT","")) 是要走的路
  • @peixe subset 评估其参数的方式在某些情况下可能会导致意外结果。如果您阅读?subset,您会注意到最后的警告,即仅以交互方式使用此功能,也就是说,当您在 R shell 中工作时。如果您正在编写的内容将成为脚本的一部分,最好坚持标准的[ 表示法:dino[! dino$onset %in% c('QT', ''), ]
  • 哇,我向你脱帽致敬。这是完美的。您可以将其发布为问题的解决方案吗? :) 谢谢!
  • @mplourde 哦,你是对的。我没有注意到那个警告......
  • @peixe 我认为他们会在语言中保留一些既多余又有问题的东西有点奇怪,但事实就是如此。

标签: r dataframe subset


【解决方案1】:

@Matthew Plourde 提出的解决方案:

dino[! dino$onset %in% c('QT', ''), ]

【讨论】:

    【解决方案2】:

    @Joris Meys 提出的解决方案:

    subset(dino, ! onset %in% c("QT",""))
    

    【讨论】:

    • 我会选择这个答案,因为它是第一个,也是我最终使用的。请参阅上面的讨论主题。
    猜你喜欢
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多