作者MIZUYAMA (致命祈願)
看板Statistics
標題[程式] R計算問題
時間Tue Mar 5 11:05:07 2013
[軟體程式類別]: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
1F:推 lin15:A[1]==>A[,1] ifelse的括號也有錯吧 03/05 11:38
2F:→ MIZUYAMA:喔喔 沒有 我打在ptt時打錯 程式碼沒錯 03/05 13:03
※ 編輯: MIZUYAMA 來自: 219.85.83.97 (03/05 13:04)
※ 編輯: MIZUYAMA 來自: 219.85.83.97 (03/05 13:38)
3F:推 blackalert:看不出問題 XD 試試檢查一下資料? 03/05 14:18
4F:推 blackalert:我懷疑你的資料屬性是character 03/05 14:24
5F:推 onionsteven:%in% c(5,6,7,8,9) 5.1會被排除 03/05 17:37
6F:推 onionsteven:c(5:9)不是5<x<9 而是 5,6,7,8,9 03/05 17:40
7F:→ MIZUYAMA:o大 我就是要56789 我確認是資料問題了 是character 03/06 08:39
8F:→ MIZUYAMA:如果是character 要怎麼解決呢? 03/06 08:40
9F:推 blackalert:如果你能列個幾筆資料出來可能會比較知道問題在哪 03/06 09:32
10F:→ blackalert:不過從內文看起來,你的A[,1]該不會是類似"44-"這樣吧? 03/06 09:33
11F:→ blackalert:是的話,就要用 A[,1] == "44-" 而不是 A[,1] < 44 03/06 09:34
12F:→ MIZUYAMA:blackalert大 44-是簡稱 指小於45的一群數字 03/06 11:24
13F:→ MIZUYAMA:目前確認是A[,2]出問題 用as.numeric似乎還是沒用... 03/06 11:25
14F:→ MIZUYAMA:A[,2]有幾項會夾帶英文 如98A 3E 不過沒差因為不是我要的 03/06 11:28
15F:→ MIZUYAMA:強制轉成數字 生成NA也應該抓的道說~"~ 03/06 11:28
16F:→ MIZUYAMA:意外解決的 as.vector.... 03/06 12:00
17F:推 onionsteven:可以請問原本A[,2]的mode是甚麼類型嗎? 03/06 18:11
18F:推 onionsteven:%in%前後資料屬性不同的話也會判定為不同的東西 03/07 10:30