[問題] dataframe字串切割

看板R_Language作者 (MJ)時間7年前 (2018/06/04 23:47), 編輯推噓1(1020)
留言21則, 3人參與, 7年前最新討論串1/4 (看更多)
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 我目前整理了一份學校所有課程的時間表,想知道不同星期,不同地點,各時段的 人數統計。dataframe資料範例如下: 流水號 課程名稱 時間 地點 人數 102 A 二3,4四5,7 甲 10 248 B 一1,2,3 乙 20 314 C 三4五7,8,a 丙 5 想請問各位可以用甚麼方法對時間那一欄作字串切割變成以下新的dataframe 流水號 課程名稱 星期 節次 地點 人數 102 A 二 3 甲 10 102 A 二 4 甲 10 102 A 四 5 甲 10 102 A 四 7 甲 10 248 B 一 1 乙 20 248 B 一 2 乙 20 . . . . . . 目前想法只有想到for迴圈搭配strspilt,但還是想不到實際寫法,麻煩各位指教了,謝謝 [環境敘述] R version 3.4.2 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.214.51.138 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1528127261.A.726.html

06/05 00:04, 7年前 , 1F
先切割問題。如果給你流水號102的課程,你有沒有辦法切?
06/05 00:04, 1F

06/05 00:05, 7年前 , 2F
"二3,4四5,7" --> list(c("二","二","四","四"),
06/05 00:05, 2F

06/05 00:06, 7年前 , 3F
c(3,4,5,7))
06/05 00:06, 3F

06/05 00:06, 7年前 , 4F
先解決這個問題,再解決其他問題。我自己是覺得這個問題
06/05 00:06, 4F

06/05 00:06, 7年前 , 5F
最難
06/05 00:06, 5F

06/05 00:07, 7年前 , 6F
大概要先解決:1.分辨數字、中文字 2.中文字與數字的搭配
06/05 00:07, 6F

06/05 00:07, 7年前 , 7F
解決這兩個問題就寫出來了
06/05 00:07, 7F

06/05 00:08, 7年前 , 8F
上面搭配的意思是,分辨如"二3四5,6,7"與"二3,4四5,7"
06/05 00:08, 8F

06/05 00:32, 7年前 , 9F
反過來想就好XD,先把二、四當作切割字元
06/05 00:32, 9F

06/05 00:33, 7年前 , 10F
這樣就能拆出3,4跟5,7,然後把3,4跟5,7當作切割字元
06/05 00:33, 10F

06/05 00:33, 7年前 , 11F
這樣就能變成 list(c("二","四"),c("3,4","5,7"))
06/05 00:33, 11F

06/05 00:34, 7年前 , 12F
然後先展開日期部分,在切割一次節次就結束了
06/05 00:34, 12F

06/06 01:13, 7年前 , 13F
感謝Wush大指點問題切割方向,我在作的時候就是
06/06 01:13, 13F

06/06 01:16, 7年前 , 14F
卡在這部分,不知道怎麼中文字跟數字作切割
06/06 01:16, 14F

06/06 13:07, 7年前 , 15F
可以用正規表達式來抓0-9
06/06 13:07, 15F

06/06 13:07, 7年前 , 16F
可以參考我之前寫的教學: http://0rz.tw/Z7bn3
06/06 13:07, 16F

06/06 13:08, 7年前 , 17F
之後搭配的問題,我會先用中文字當錨點切割字串
06/06 13:08, 17F

06/06 13:08, 7年前 , 18F
把字串變成如 "一1,2" , "三3,4" 這樣之後,再展開就解
06/06 13:08, 18F

06/06 13:08, 7年前 , 19F
決了
06/06 13:08, 19F

06/06 18:20, 7年前 , 20F
瞭解,原來c大是用正規表達方法,一開始想說怎麼都
06/06 18:20, 20F

06/06 18:20, 7年前 , 21F
看不懂XD 我會好好研究您的教學 感謝~
06/06 18:20, 21F
文章代碼(AID): #1R5LyTSc (R_Language)
文章代碼(AID): #1R5LyTSc (R_Language)