繁体   English   中英

当它提供特定值时从数据框中删除因子

[英]Remove factor from dataframe when it provides a certain value

我有以下数据

 head(df_raw)
  Scan                    Zeit Sensor Response
1    1 04.09.2019 06:28:22:405    101   9936.3
2    2 04.09.2019 06:28:32:389    101   9958.0
3    3 04.09.2019 06:28:42:389    101   9958.0
4    4 04.09.2019 06:28:52:389    101   9979.7
5    5 04.09.2019 06:29:02:389    101   9979.7
6    6 04.09.2019 06:29:12:389    101   9936.3
7    3 04.09.2019 06:28:42:389    102   9958.0
8    4 04.09.2019 06:28:52:389    102   9.9e+37
9    5 04.09.2019 06:29:02:389    102   9.9e+37
10    6 04.09.2019 06:29:12:389    102   9936.3
11    4 04.09.2019 06:28:52:389    103   7563.5
12    5 04.09.2019 06:29:02:389    103   9871.1
13    6 04.09.2019 06:29:12:389    103   10354.8

有时,传感器坏了,然后它会提供 ~inf。 9.9e+379.900e+37这样的数字。 当传感器提供如此高的值时,即使只有一次,我也想从数据框中删除该传感器。

为了移除整个传感器,那么你可以做

df[!df$Sensor %in% (df$Sensor[df$Response == 9.90000e+37]),]

这将删除所有102传感器,如下所示,

 Scan Zeit Sensor Response 1 1 04.09.201906:28:22:405 101 9936.3 2 2 04.09.201906:28:32:389 101 9958.0 3 3 04.09.201906:28:42:389 101 9958.0 4 4 04.09.201906:28:52:389 101 9979.7 5 5 04.09.201906:29:02:389 101 9979.7 6 6 04.09.201906:29:12:389 101 9936.3 11 4 04.09.201906:28:52:389 103 7563.5 12 5 04.09.201906:29:02:389 103 9871.1 13 6 04.09.201906:29:12:389 103 10354.8

可能有更聪明的方法,但一个简单的方法是:

将值转换为 NA

df_raw[df_raw == 9.9e+37]<- NA

使用 NA 删除列

not_any_na <- function(x) all(!is.na(x))
df_raw<- df_raw %>%
                    select_if(not_any_na)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM