簡體   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