这是我的循环:
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。我的数据集非常大,这个循环需要很长时间。有没有更好的方法来实现相同的结果但速度更快?
答案 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)]