加速R语言中的for/if循环:批量处理气象站温度数据
气象站温度数据修正与效率优化
核心需求
- 删除温度值>100°C的错误行
- 新增一列
temperature2,值为原温度除以10 - 优化70万行数据的处理效率(替代低效的for/if循环)
原循环的问题
R的for循环是逐行解释执行的,处理几十万行数据时速度极慢,而且原代码的判断逻辑完全可以通过向量操作简化,没必要逐行遍历。
优化方案(向量式处理)
直接用R的向量运算和索引过滤,底层是C级别的优化,处理70万行毫无压力:
先过滤错误数据
保留温度≤100°C的行(如果不需要保留NA值,可去掉| is.na(df$temperature)):df <- df[df$temperature <= 100 | is.na(df$temperature), ]新增目标列
直接对整列做除法运算,自动处理所有行(包括NA值,NA/10仍为NA,符合逻辑):df$temperature2 <- df$temperature / 10
补充说明
如果需要给NA值设置默认值(比如0),可以用ifelse向量式判断:
df$temperature2 <- ifelse(is.na(df$temperature), 0, df$temperature / 10)
内容的提问来源于stack exchange,提问作者Jefferson Santos
相关产品推荐
相关产品推荐

