[問題] 如何整理數量位置資料如:1胃,2腸

作者: helixc (@_2;)   2015-07-10 14:14:40
[軟體熟悉度]:新手+入門
[問題敘述]:
手上有一筆某蛙類的解剖資料,想要分析食性。
紀錄的時候會長這樣:
ID,Food A,Food B,Food C,Food E
C146,,,,3腸
B287,,,,10腸
C140,,,,4腸
C133,,,1腸,
C132,1腸,,,
B305,,,1腸,
C112,,2腸,,1腸
C120,,,,1腸
C128,,,,1腸
想要整理成這樣的資料:
ID, Food type, Amount, Location
C146, E, 3, 腸
B287, E, 10, 腸
C140, E, 4, 腸
C133, C, 1, 腸
目前我知道怎麼用tidyr::gather()整理資料,
但目前想不到要怎麼把混在一起的數字和文字分開。
因為數量不一定都是一位數的數字,位置也會有兩個字的狀況,
純粹把資料當成文字硬去抽取特定位置沒辦法解決這個問題。
資料量不大,其實可以用Excel做,
但我在Excel就是用left()和right()抽取最常見的位數,
再用工人智慧去檢核。理論上在R應該有更人工智慧(?)的方法?
作者: celestialgod (天)   2015-07-10 15:02:00
tidyr::separate你如果把資料補齊,可以教你寫...更正,我發現沒那麼簡單= =,我寫一下,等等PO給你這裡separate不能用,因為他一定要有分隔符號目前沒有找到可以直接分開相連的字串qq
作者: hwjuranus (建設中)   2015-07-10 15:59:00
先把原資料的 "," 取代成 "\tab" 再把資料貼進excel欄位就自動隔開了 接著在新欄位用if 整理前方資料大致就像樣了 我也不會用tidyr::gather()
作者: celestialgod (天)   2015-07-10 16:29:00
EXCEL可用if,isnumber,numbervalue,if先判斷左2是否是數字,不對就在檢驗左1 回傳數字
作者: Wush978 (拒看低質媒體)   2015-07-10 17:47:00
先簡單寫個for迴圈搭配strsplit簡單做呢
作者: helixc (@_2;)   2015-07-10 20:06:00
那個範例資料是我轉成CSV各式貼上來的請問有字串處理的教學資源嗎

Links booklink

Contact Us: admin [ a t ] ucptt.com