R语言查找指定值的位置(行列)1

这篇博客分享了如何在R语言中查找气象数据中的异常值(如平均气温过高)和空值,并探讨了处理策略。通过使用`which()`函数结合条件判断,定位到了异常值行,并展示了部分实例。同时,博主提醒直接删除异常值并不理想,建议采用前后两天平均值来填补。此外,还展示了如何查找并列出空值所在的位置。
摘要由CSDN通过智能技术生成

坚持写东西真的不容易,已经停更好久了,哎!
用R查找数据是常有的事情,例如:我想知道A列的空值(NA)或者0或者异常值在哪一行,当然1000行内的扫一眼就好,如果上万行的怎么办呢?

1. 数据列介绍

我这里有个5W+行24列的数据列

> dim(ms_data3)
[1] 509823     24
> str(ms_data3)
'data.frame':	509823 obs. of  24 variables:
 $ X            : int  1 2 3 4 5 6 7 8 9 10 ...
 $ station      : int  53959 53959 53959 53959 53959 53959 53959 53959 53959 53959 ...
 $ time         : Factor w/ 12053 levels "1987-1-1","1987-1-10",..: 7671 7682 7693 7696 7697 7698 7699 7700 7701 7672 ...
 $ year         : int  2008 2008 2008 2008 2008 2008 2008 2008 2008 2008 ...
 $ month        : int  1 1 1 1 1 1 1 1 1 1 ...
 $ day          : int  1 2 3 4 5 6 7 8 9 10 ...
 $ precipitation: num  0 0 0 0 0 0 0 0 0 0.1 ...
 $ meanTem      : num  -2.2 -3.6 0.3 0 -0.7 -1.1 1.2 1.1 0.9 1.6 ...
 $ sunshine     : num  6.9 7.3 7.5 1.7 4 1.4 4.8 6.6 1.1 0 ...
 $ minTem       : num  -7.8 -9.7 -3.9 -3.6 -7.3 -6.1 -4.5 -3.8 -4.5 0.1 ...

2. 问题及解决办法

我的数据列是个气象数据列,计算时发现平均温度有问题,有异常值,因此需要找出异常值的确切位置,

 ms_data3[which(ms_data3$meanTem>100),]
            X station       time year month day precipitation meanTem sunshine minTem maxTem site province   city
66613   66613   57042  2006-5-17 2006     5  17           0.0  3276.6     11.9   11.9   30.6   hh   陕西省 富平县
68224   68224   57042 2010-10-14 2010    10  14           0.0  3276.6      7.4   11.1   24.0   hh   陕西省 富平县
70714   70714   57042   2017-8-8 2017     8   8           0.1  3276.6     10.7   18.6   33.5   hh   陕西省 富平县
77902   77902   57043  2005-4-13 2005     4  13           0.0  3276.6     11.2    2.8   23.5   hh   陕西省 大荔市
77903   77903   57043  2005-4-14 2005     4  14           0.0  3276.6     11.0   11.4   26.4   hh   陕西省 大荔市
78908   78908   57043  2008-1-14 2008     1  14           0.0  3276.6      0.0   -6.2   -3.4   hh   陕西省 大荔市
78909   78909   57043  2008-1-15 2008     1  15           0.4  3276.6      0.0   -6.1   -0.8   hh   陕西省 大荔市
78923   78923   57043  2008-1-29 2008     1  29           0.0  3276.6      7.3   -8.2   -3.4   hh   陕西省 大荔市
82401   82401   57043   2017-8-7 2017     8   7           0.0  3276.6   3276.6   21.5   28.6   hh   陕西省 大荔市
82402   82402   57043   2017-8-8 2017     8   8           0.4  3276.6     12.0   20.4   33.4   hh   陕西省 大荔市
 ms_data3[which(ms_data3$meanTem==3276.6),]
            X station       time year month day precipitation meanTem sunshine minTem maxTem site province   city
66613   66613   57042  2006-5-17 2006     5  17           0.0  3276.6     11.9   11.9   30.6   hh   陕西省 富平县
68224   68224   57042 2010-10-14 2010    10  14           0.0  3276.6      7.4   11.1   24.0   hh   陕西省 富平县
70714   70714   57042   2017-8-8 2017     8   8           0.1  3276.6     10.7   18.6   33.5   hh   陕西省 富平县
77902   77902   57043  2005-4-13 2005     4  13           0.0  3276.6     11.2    2.8   23.5   hh   陕西省 大荔市
查找空值位置
> ms_data3[which(is.na(ms_data3$precipitation)),]
      X station       time year month day precipitation meanTem sunshine minTem maxTem site province   city
15   15   53959  2008-1-15 2008     1  15            NA    -4.3      0.0   -6.5   -1.1   hh   山西省 运城市
22   22   53959  2008-1-22 2008     1  22            NA    -3.8      0.0   -5.6   -1.1   hh   山西省 运城市
89   89   53959  2008-3-29 2008     3  29            NA    11.1      0.0    8.1   14.6   hh   山西省 运城市
130 130   53959   2008-5-9 2008     5   9            NA    17.3      7.2   12.4   24.9   hh   山西省 运城市
137 137   53959  2008-5-16 2008     5  16            NA    26.6      8.8   15.7   34.7   hh   山西省 运城市
138 138   53959  2008-5-17 2008     5  17            NA    24.1      6.0   19.9   30.2   hh   山西省 运城市

3. 延伸

查找到了精确位置,鉴于数据的连续型,直接删除行不是个好办法,取前后两天的平均值应该最为理想,所以该如何去设计下哩?

看完如果对你有帮助,感谢点赞支持!
如果你是电脑端,看到右下角的 “一键三连” 了吗,没错点它[哈哈]

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值