如何根据列值对行进行循环操作? [R

时间:2020-03-25 17:28:46

标签: r loops if-statement

我正在尝试创建一个新列sep_l_values,该列取决于列division中的值。

我有一些数据agg

division   agg_4546   agg_47  
  45         10         NA     
  46         11         NA   
  47         NA         10   

我想要:

division   agg_4546   agg_47  sep_l
  45         10         NA     10
  46         11         NA     11
  47         NA         10     10

为什么这行不通?请您提供解决方案?

for (row in 1:nrow(agg)){
  if (agg[row,'division'] = 47){
    agg$sep_l <- agg$agg_47
  } else {
    agg$sep_l <- agg$agg_4546 
  }
}

错误消息显示

Error: unexpected '=' in:
"for (row in 1:nrow(div_to_agg)){
  if (div_to_agg[row,'division'] ="

但是我需要=作为条件吗?

1 个答案:

答案 0 :(得分:0)

agg<-data.frame(division=c(45,46,47),agg_4546=c(10,11,NA),agg_47=c(NA,NA,10))

for (row in 1:nrow(agg)){
  if (agg[row,'division'] == 47){
    agg$sep_l[row] <- agg$agg_47[row]
  } else {
    agg$sep_l[row] <- agg$agg_4546[row]
  }
}

您错过了if条件中的双“ ==”,而错过了[[row]“来访问特定条目而不是到” agg“的整个列中