看板 Statistics 關於我們 聯絡資訊
[軟體程式類別]:R [程式問題]: 單純計算問題 只是想不出程式碼哪裡有錯 [軟體熟悉度]: 中(3個月到1年) [問題敘述]: 舉例 有個100*3的矩陣A A[,1]分於三個部分 44- ,45~64,65+ A[,2]則是1~10隨機 A[,3] =1 or 2 我要計算 A[,1] 小於等於44 (44-) A[,2] 介於5~9 A[,3] 等於1 符合這三個條件的個數 [程式範例]: 我是這樣寫的 但是跑出來是0...我認為是不可能的.... x<-sum(ifelse(A[,1]<45 & A[,2] %in% c(5:9) & A[,3]==1,1,0)) 結果算出來x=0 想請問板上高手有看出這句程式碼哪裡有錯嗎 冏? ----------------------------------------------------------------------------- -- 「如果昨天到了明天會變成兩天前,試問後天應該是今天或是昨天?」 ~時間操縱緒論期末考 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.83.97
lin15:A[1]==>A[,1] ifelse的括號也有錯吧 03/05 11:38
MIZUYAMA:喔喔 沒有 我打在ptt時打錯 程式碼沒錯 03/05 13:03
※ 編輯: MIZUYAMA 來自: 219.85.83.97 (03/05 13:04) ※ 編輯: MIZUYAMA 來自: 219.85.83.97 (03/05 13:38)
blackalert:看不出問題 XD 試試檢查一下資料? 03/05 14:18
blackalert:我懷疑你的資料屬性是character 03/05 14:24
onionsteven:%in% c(5,6,7,8,9) 5.1會被排除 03/05 17:37
onionsteven:c(5:9)不是5<x<9 而是 5,6,7,8,9 03/05 17:40
MIZUYAMA:o大 我就是要56789 我確認是資料問題了 是character 03/06 08:39
MIZUYAMA:如果是character 要怎麼解決呢? 03/06 08:40
blackalert:如果你能列個幾筆資料出來可能會比較知道問題在哪 03/06 09:32
blackalert:不過從內文看起來,你的A[,1]該不會是類似"44-"這樣吧? 03/06 09:33
blackalert:是的話,就要用 A[,1] == "44-" 而不是 A[,1] < 44 03/06 09:34
MIZUYAMA:blackalert大 44-是簡稱 指小於45的一群數字 03/06 11:24
MIZUYAMA:目前確認是A[,2]出問題 用as.numeric似乎還是沒用... 03/06 11:25
MIZUYAMA:A[,2]有幾項會夾帶英文 如98A 3E 不過沒差因為不是我要的 03/06 11:28
MIZUYAMA:強制轉成數字 生成NA也應該抓的道說~"~ 03/06 11:28
MIZUYAMA:意外解決的 as.vector.... 03/06 12:00
onionsteven:可以請問原本A[,2]的mode是甚麼類型嗎? 03/06 18:11
onionsteven:%in%前後資料屬性不同的話也會判定為不同的東西 03/07 10:30