我有一个巨大的表,表中有三列标签,分别是对汉堡的深入分析。 这是表格的一小部分(对不起分隔符)
NAME@FEATURE@DESCRIPTION
Kburger@supplier@Jackobs12
Kburger@type@Minkins Carnivorous
Kburger@deposit@http://minkins.sord/deposit/Kburger
Kburger@opinions@shitty::very gummy|shitty::grey
Kburger@code@HB3T2323|Tried just once; IT IS: disgusting…
Aburger@supplier@Mark11
Aburger@type@Minkins Carnivorous
Aburger@deposit@http://minkins.sord/deposit/Aburger
Aburger@opinions@shitty::very gummy
Cburger@supplier@David22
Cburger@type@Minkins Carnivorous
Cburger@deposit@http://minkins.sord/deposit/Cburger
Cburger@opinions@shitty::very gummy|slightly hard::never again
Dburger@supplier@Jason99
Dburger@type@Minkins Carnivorous
Dburger@deposit@http://minkins.sord/deposit/Dburger
Dburger@opinions@shitty::very gummy
Eburger@supplier@CarlX
Eburger@type@Minkins Vegetarian
Eburger@deposit@http://minkins.sord/deposit/Eburger
Eburger@opinions@shitty::very gummy|shitty::abnormal
Fburger@supplier@Dino12
Fburger@type@Minkins Vegetarian
Fburger@deposit@http://minkins.sord/deposit/Fburger
Fburger@opinions@shitty::very gummy
Fburger@code@HB3T5554|Reminds me about vomit (N3VER); MEMORIES: No other comments...
如您所见,对于一些汉堡名称,我们有5个特性而不是4个,显示“代码”特性(总是以HB开头),在许多情况下,它是缺失的。我想用R解析这个表,得到一个3列tab分隔的摘要表,其中包含一行代码、名称和观点,如下所示:
CODE NAME DESCRIPTION
HB3T2323 Kburger shitty::very gummy|shitty::grey
HB3T5554 Fburger shitty::very gummy
这是我在bash中的粗略解决方案,我真的很惭愧:
cat table.txt | tr '@' '\t' | grep "HB" | cut -d '|' -f1,3 | cut -f1,3 | while read i; do echo $(echo $i | awk '{print $2}') && grep $(echo $i | awk '{print $1}') table.txt | grep "opinions" ; done | tr '@' '\t' | paste - - | cut -f1,2,4 > new_table.txt
如果你也能用bash或python提供一个解决方案,我也会很感激,但老实说,我更喜欢R
下面是一个使用dplyr和tidyr包的潜在R解决方案
相关问题 更多 >
编程相关推荐