[问题] 如何整理数量位置资料如: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