看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 不好意思 原始資料中 有些空白被填上- ? NA這種 但實際上他是遺漏值, 有沒有什麼方式可以把它們取代成空白 讓is.na判斷成是遺漏值, 謝謝!! [程式範例]: wdbc=read.table("DM_Assignment_2_Kidney.csv", header=F,sep=",") wdbc1=wdbc names(wdbc) <- c("Age","Blood Pressure","Specific Gravity","Albumin","Sugar","Red Blood Cells","Pus Cell","Pus Cell clumps","Bacteria","Blood Glucose Random","Blood Urea","Serum Creatinine","Sodium","Potassium","Hemoglobin","Packed Cell Volume","White Blood Cell Count","Red Blood Cell Count","Hypertension","Diabetes Mellitus","Coronary Artery Disease","Appetite","Pedal Edema","Anemia","Class") for(i in 1:25)( wdbc1[,i]<-gsub("[?]",NA, wdbc[,i]) ) [關鍵字]: 遺漏值 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.1.141 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1521977692.A.9B7.html
celestialgod: which(is.na(x), arr.ind = TRUE) 03/25 19:39
celestialgod: 會回傳NA所在的Row跟Column位置 03/25 19:39
jasonfghx: THX 03/25 19:50
※ 編輯: jasonfghx (140.116.1.141), 03/25/2018 20:11:44
celestialgod: matrix還是data.frame? 03/25 20:13
celestialgod: matrix用gsub(x, "[-?]", "NA") 在抓=="NA"的位置 03/25 20:13
celestialgod: 漏看還有空白 gsub(x, "[-? ]", "NA") 03/25 20:14
celestialgod: 我放錯位置了Orz gsub("[-? ]", "NA", x) 03/25 20:16
celestialgod: 如果是長度為零的話 x[nchar(x)] = "NA" 03/25 20:16
celestialgod: 更正 x[nchar(x)==0] = "NA" 03/25 20:17
celestialgod: data.frame的話 就有很多做法了QQ 03/25 20:18
celestialgod: 看你是用base的函數還是dplyr or data.table 03/25 20:18
celestialgod: 不過data.frame的做法也一樣拉,是character的欄位 03/25 20:19
celestialgod: 做上面那兩件事情,取代長度為0的跟取代特殊字元 03/25 20:19
celestialgod: 另外,你如果是讀檔案的話,還可以用 03/25 20:20
celestialgod: read.table的na.strings去把你要變NA的字串直接轉NA 03/25 20:20
celestialgod: https://pastebin.com/B8xMx9mP 03/25 20:21
jasonfghx: THX 03/25 20:27
jasonfghx: 我來學習一下 03/25 20:27
很感謝 其實我已經用到gsub 但是我是打"?" 難怪什麼東西都跑不出來 看到你的[] 我已經茅塞頓開 ※ 編輯: jasonfghx (140.116.1.141), 03/25/2018 20:32:44
jasonfghx: 經過gsub 原本是data frame的資料都變成char 03/25 20:56
jasonfghx: 這有解嗎? 03/25 20:56
jasonfghx: 我自己解決了 03/25 21:17
※ 編輯: jasonfghx (140.116.1.141), 03/25/2018 21:18:15