[問題] 多個子集合選取

看板R_Language作者 (小煥)時間8年前 (2016/01/26 12:00), 編輯推噓0(004)
留言4則, 4人參與, 最新討論串1/1
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 新手(沒寫過程式,R 是我的第一次) [問題敘述]: 處理比較大量的資料, 想要選取某個類別當中的幾個Levels作為子集合, 但是只會一個一個將不要的刪除, 不知道有沒有一個可以簡單化的程式? [程式範例]: 以下為簡單的例子: 假設我有個Data Sheet(檔案名稱為Score): 班級 座號 分數 A 1 50 A 2 60 A 3 70 B 1 80 B 2 90 B 3 100 C 1 90 C 2 80 C 3 70 D 1 60 D 2 50 D 3 60 若我想要擷取A班的成績: Score[Score$班級 == "A",] 若我想要擷取C班的成績: Score[Score$班級 == "C",] 就可以很容易地擷取出來。 但若我想要同時擷取A & C班的成績, 希望出來的結果: 班級 座號 分數 A 1 50 A 2 60 A 3 70 C 1 90 C 2 80 C 3 70 Score[Score$班級 == "A" & Score$班級 == "C",] 上面的程式就不會跑出我想要的結果 我就只能將不必要的一一刪除: Score[Score$班級 != "B",] Score[Score$班級 != "D",] 同時跑上面兩行程式,才會出現我要的結果, 但是當Levels很多的時候,就會變得很麻煩, 不知道有沒有比較簡單的程式,可以達成這樣的結果? [環境敘述]: R 3.1.2 [關鍵字]: 子集合選取 -- 如果將字母A到Z分別編上1到26的分數(A=1,B=2...,Z=26) 你的知識(KNOWLEDGE)得到96分(11+14+15+23+12+5+4+7+5=96) 你的努力(HARDWORK)也只得到98分(8+1+18+4+23+15+18+11=98) 你的態度(ATTITUDE)才是左右你生命的全部(1+20+20+9+20+21+4+5=100) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.245.73 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1453780847.A.8F6.html

01/26 14:30, , 1F
Score[Score$班級 == "A" | Score$班級 == "C",]
01/26 14:30, 1F

01/26 14:38, , 2F
謝謝 我試試看
01/26 14:38, 2F

01/28 02:46, , 3F
subset()也有一樣功能,也容易閱讀。
01/28 02:46, 3F

01/28 08:54, , 4F
Score[Score$班級 %in% c("A", "C"),]
01/28 08:54, 4F
文章代碼(AID): #1MfkzlZs (R_Language)