[問題] dataframe字串切割

作者: wmj10054039 (MJ)   2018-06-04 23:47:39
[問題類型]:
程式諮詢(我想用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
作者: Wush978 (拒看低質媒體)   2018-06-05 00:04:00
先切割問題。如果給你流水號102的課程,你有沒有辦法切?"二3,4四5,7" --> list(c("二","二","四","四"),c(3,4,5,7))先解決這個問題,再解決其他問題。我自己是覺得這個問題最難大概要先解決:1.分辨數字、中文字 2.中文字與數字的搭配解決這兩個問題就寫出來了上面搭配的意思是,分辨如"二3四5,6,7"與"二3,4四5,7"
作者: celestialgod (天)   2018-06-05 00:32:00
反過來想就好XD,先把二、四當作切割字元這樣就能拆出3,4跟5,7,然後把3,4跟5,7當作切割字元這樣就能變成 list(c("二","四"),c("3,4","5,7"))然後先展開日期部分,在切割一次節次就結束了
作者: wmj10054039 (MJ)   2018-06-06 01:13:00
感謝Wush大指點問題切割方向,我在作的時候就是卡在這部分,不知道怎麼中文字跟數字作切割
作者: Wush978 (拒看低質媒體)   2018-06-06 13:07:00
可以用正規表達式來抓0-9可以參考我之前寫的教學: http://0rz.tw/Z7bn3之後搭配的問題,我會先用中文字當錨點切割字串把字串變成如 "一1,2" , "三3,4" 這樣之後,再展開就解決了
作者: wmj10054039 (MJ)   2018-06-06 18:20:00
瞭解,原來c大是用正規表達方法,一開始想說怎麼都看不懂XD 我會好好研究您的教學 感謝~

Links booklink

Contact Us: admin [ a t ] ucptt.com