【问题标题】:Data frames and vectors management数据框和向量管理
【发布时间】:2015-10-12 21:05:55
【问题描述】:

我有一个包含一列字符的数据框,其余列由整数组成。我想做的是检查特定列(5)的值,如果它们> 1000,则将该值插入到新创建的向量中。到目前为止,我已经提出了这个解决方案,但是我在 if 语句中遇到了一个错误。任何帮助将不胜感激。

D 是数据框

greaterthan1000 <- vector ('numeric',length = nrow(D))
for (i in 1:nrow(D)){
   if(D[[i]][[5]]>1000){
     greaterthan1000 <- c(D[[i]][[5]])
   }
}

错误:

if (D[[i]][[5]] > 1000) { 中的错误:缺少 TRUE/FALSE 的值 需要

另外:

警告消息:在 Ops.factor(B[[i]][[5]], 1000) 中:'>' 没有意义 对于因素

【问题讨论】:

  • greaterthan1000 = D[[5]][D[[5]] &gt; 1000] 可以工作,不需要 for 循环。在您的代码中,将 D[[i]][[5]] 替换为 D[[5]][i]
  • 不过,鉴于您的警告,您可能还想检查课程。如果class(D[[5]]) 是一个因素,您可能首先需要D[[5]] = as.numeric(as.character(D[[5]]))
  • 好的,给我一秒钟,然后检查一下。不过提前谢谢
  • 我决定使用全数字数据框,因为我认为我的教授搞砸了练习(在那之后发现了很多错误)。如果这不是一个错误,我会再次提出这个问题。谢谢

标签: r vector dataframe


【解决方案1】:

你可能想要

greaterthan1000 <- D[D[, 5] > 1000, 5]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2015-02-03
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    相关资源
    最近更新 更多