如何通过行索引遍历行-R

时间:2018-08-14 23:04:04

标签: r for-loop dataframe

我有一个数据帧(dat_gs2),它是12行乘17列。我希望遍历两列中的每一行,并使用它们来计算第三列的值。我用下面的代码面临的问题是关键字“ in”被标记为“意外的令牌输入”。如果我尝试运行此代码块,则会收到以下错误。我不确定是什么问题。任何帮助表示赞赏

  

[.data.frame(dat_qs2,i,11)出错:找不到对象'i'”

    LoopIters<-1:12

    i=1



    For (i in seq_along(LoopIters))
    {
      if ((dat_qs2[i,11]/dat_qs2[i,13])<.25)
        {
          dat_qs2[i,14]<-"Low"
          next
        }
      else if((dat_qs2[i,11]/dat_qs2[i,13])<.75)
        {
          dat_qs2[i,14]<-"Medium"
          next
        }
      else if((dat_qs2[i,11]/dat_qs2[i,13])>=.75)
        {
          dat_qs2[i,14]<-"High"
          next
        }
    }

2 个答案:

答案 0 :(得分:1)

这里没有循环:

dat_qs2[ ,14] <- ifelse(dat_qs2[,11]/dat_qs2[,13]<.25, "Low", 
                 ifelse(dat_qs2[,11]/dat_qs2[,13]<.75, "Medium",
                         "High"))

答案 1 :(得分:0)

这应该达到相同的结果。在没有看到实际数据的情况下,我假设您的数据框中的列名称。

library("tidyverse") # or library("dplyr")

dat_result <- 
    dat_qs2 %>%
      mutate(newcolumn = ifelse(columnName11 / columnName13 < 0.75, "Medium", "High")
             , newcolumn = ifelse(columnName11 / columnName13 < 0.25, "Low", newcolumn)
相关问题