【问题标题】:How to change data within a column in a dataset in R如何在R中的数据集中更改列中的数据
【发布时间】:2021-02-28 07:17:40
【问题描述】:

我创建了一个遍历某一列的每一行的 for 循环。我想根据特定条件更改该单元格中写入的信息,因此我实现了 if/else 语句。

但是,当前的问题是数据正在打印出一个特定的结果:B。

我尝试通过使用 write.csv 导出并使用 read.csv 导入来解决这个问题。 但是,当我应用 head() 函数时,我仍然得到所有行的 Medium。

请问有人可以帮忙吗?

【问题讨论】:

  • 您没有按行分配值。 cool$b <- "Medium" 会将 Medium 分配给整个列 b。使用cool[i, "b"] 分配。
  • 嗯,感谢您的帮助。我尝试这样做,但随后在“if (...)”中出现错误,其中提到参数的长度为零。
  • 检查?cut?findInterval。请参阅此示例 - stackoverflow.com/questions/12979456/…

标签: r for-loop if-statement printing dataset


【解决方案1】:

逐步浏览以下示例。您需要正确分配 for 循环变量。您能否向我们展示您正在更改值的数据框?那会很有帮助。

#creating new data frame
Df <- data.frame(a=c(1,2,3,4,5),b=c(2,3,5,6,8),c=c(10,4,2,3,7))   


for (k in 1:dim(Df)[1]) {
#see how k is utilised and Df$Newcolumn creates new column in existing dataframe
  if (Df$a[k]<=3) {
    Df$Newcolumn[k] <- "low"
  }else if (Df$a[k]>3 && Df$a[k]<=6) {
    Df$Newcolumn[k] <- "medium"
  }
    
}

【讨论】:

    【解决方案2】:

    您不需要使用 for 循环来根据条件创建新列。你可以简单地使用这个:

    cool$b<-cool$a
    
    cool$b[cool$a <3]<-"low"
    
    cool$b[cool$a >= 3 & school_data2019$Taxable.Income< 4]<-"Medium"
    
    cool$b[cool$a >= 4 & school_data2019$Taxable.Income < 5]<-"Rich"
    
    cool$b[cool$a >5]<-"Very Rich" 
    

    【讨论】:

      猜你喜欢
      • 2014-11-26
      • 2018-11-18
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 2015-04-23
      • 2019-02-03
      • 2014-05-26
      相关资源
      最近更新 更多