我试图找几个小时的解决方案。我试图搜索过,如果我忽略了这个问题的答案,请将其作为重复关闭。R:计算列中值的分数,按另一列中的值进行分组
我有一个矩阵,通过transcript_id
排序,然后cond
:
transcript_id cond expr
A1 B1 40
A1 B2 30
A1 B3 20
A2 B2 35
A2 B3 45
A3 B1 23
A4 B1 64
A4 B3 43
我想一个新列,其中expr
每个transcript_id
内的部分列出:
transcript_id cond expr frac
A1 B1 40 0.4444
A1 B2 30 0.3333
A1 B3 20 0.2222
A2 B2 35 0.4375
A2 B3 45 0.5625
A3 B1 23 1
A4 B1 64 0.5981
A4 B3 43 0.4019
有一个聪明的方法来实现这个?
我天真的做法是编写一个函数,循环每个独特的元素在transcript_id
,但我卡住了。 请注意,并非每个transcript_id
都由全部三个cond
表示。与data.table
非常相似,这从另一个天:http://stackoverflow.com/questions/33335398/how-can-repeatedly-subtract-the-rows-of-a-data-matrix-in- r/3333629 - 使用'ave'在每个组中进行计算:'with(dat,ave(expr,transcript_id,FUN = prop.table))' – thelatemail