有条不紊地有效地更改

时间:2016-03-23 01:04:59

标签: r

这是我的循环:

for(i in 1:length(df$column)){
  if((df$column[i] == '1') |(df$column[i] == '2') | (df$column[i] == '3')){
   df$column[i] = '1'}
  else{df$column[i] = '0'}
}

这很简单。我正在做的就是将所有值1,2和3更改为1,并将其余值更改为特定列中的0。我的数据集非常大,这个循环需要很长时间。有没有更好的方法来实现相同的结果但速度更快?

2 个答案:

答案 0 :(得分:4)

  

我正在做的就是将所有值2和3更改为1,将其余值更改为特定列中的0。

这就像

一样简单
as.integer(df$column %in% 2:3)

答案 1 :(得分:0)

对于大型数据框,您可以使用data.table来获得更快的结果:

library(data.table)
setDT(df)
df[, column := ifelse(column %in% 1:3, 1, 0)]