我在Ubuntu 12.10上使用R版本2.15.3(2013-03-01)和RStudio 0.97.312。 我試圖在R中創建一些記錄器數據的直方圖。但是,一些傳感器並不總是工作,所以我得到了一些其中#N/A
和O/C
的表格。 這裏是日誌的摘錄:R中的進程記錄器文件
Date Time Type control.value (V) light.barrier (V) T hotplate ('C) T mesh ('C) T exhaust ('C) T camera ('C) Ref. Junction 1 ('C)
30.03.2012 13:47:50 Interval 0.001 23.556 411.0 O/C 30.5 35.1 23.14
30.03.2012 13:47:51 Interval 0.001 23.556 411.1 O/C 30.3 35.2 23.14
30.03.2012 13:47:52 Interval 0.001 23.556 411.1 O/C 30.2 35.5 23.14
30.03.2012 13:47:53 Interval 0.001 23.556 410.9 O/C 29.8 35.5 23.14
30.03.2012 13:47:54 Interval 0.001 23.556 410.9 O/C 30.1 35.3 23.14
30.03.2012 13:47:55 Interval 0.001 23.556 411.1 O/C 30.2 35.4 23.14
30.03.2012 13:47:56 Interval 0.001 23.556 410.8 O/C 29.8 35.4 23.14
30.03.2012 13:47:57 Interval 0.001 23.556 410.2 O/C 29.4 35.3 23.14
30.03.2012 13:47:58 Interval 0.001 23.556 409.5 O/C 29.1 35.0 23.14
30.03.2012 13:47:59 Interval 0.000 23.556 408.9 O/C 29.3 34.6 23.14
30.03.2012 13:48:00 Interval 0.000 23.556 408.7 O/C#N/A #N/A 23.14
的dput (head(logs), file = "dput.txt")
輸出:http://pastebin.de/34176
[R拒絕與#N/A
和O/C
處理列。我無法手工重新格式化,該文件有185 000行。
當我打開日誌,並嘗試創建直方圖:
> logs <- read.delim("../data/logger/logs/logs.txt", header=TRUE)
> hist (logs$mesh)
我收到此錯誤信息:
Fehler in hist.default(logs$mesh) : 'x' muss nummerisch sein
粗略的翻譯(參見:How to change the locale of R in RStudio?):
Error in hist.default(logs$mesh) : 'x' must be numeric
我可以創建直方圖的唯一列是由sapply列出的數字列。所以我想我必須刪除這些無效值才能得到數字。
如何刪除無效行?我也願意用其他方式處理它們,例如Perl或Python,如果它更適合這個任務的話。
這是加載日誌後sapply的輸出:
> sapply (logs, is.numeric)
date time type control.value light.barrier hotplate mesh exhaust
FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE
camera reference
FALSE TRUE
與NA
(https://stackoverflow.com/a/16350443/2333821)
logs.clean <- data.frame (check.rows = TRUE, apply(logs, 2, sub, pattern = "O/C|#N/A", replacement = NA))
更換#N/A
和O/C
後,我得到這個:
> sapply (logs.clean, is.numeric)
date time type control.value light.barrier hotplate mesh exhaust
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
camera reference
FALSE FALSE
你是什麼意思「處理「?你能運行'dput(head(DF))'哪裏'DF'是你的data.frame並且在這裏發佈結果? – 2013-05-03 01:11:55
如果要刪除這些行,請查看'?subset'並構造一個邏輯參數以排除這些行,例如'myvar!=「O/C&myothervar!=」#N/A「'。 – Frank 2013-05-03 01:18:32
投票拒絕因爲沒有代碼,沒有錯誤信息,也沒有關於「R拒絕處理這些列」的細節的意思。Sheesh。 – Spacedman 2013-05-03 08:47:20