减去两个data.frame列的最惯用的长表是什么?

时间:2015-07-15 11:36:08

标签: r dplyr

wide表格中,划分列很容易:

t=read.table(header=TRUE,text=
    " gene time  Green   Red
      G1   t0    10      4
      G1   t1    15      6
      G2   t0    25      3
      G2   t1    32      4")
t$ratio = t$Green/t$Red

##   gene time Green Red    ratio
## 1   G1   t0    10   4 2.500000
## 2   G1   t1    15   6 2.500000
## 3   G2   t0    25   3 8.333333
## 4   G2   t1    32   4 8.000000

我想在long表格中存档相同内容。 也就是说,在两个或多个匹配一个因子的值上应用函数,并且具有另一个因子的成对不同级别,同时能够通过其独特因子引用计算中的每个值

到目前为止,我找到的唯一解决方案是将表格转换为wide格式,然后按上述步骤进行。

library(dplyr)
library(tidyr)
t = read.table(text=
               " gene  ex  dye  time 
                 G1    4   R    t0
                 G2    3   R    t0
                 G1    10  G    t0
                 G2    25  G    t0
                 G1    6   R    t1
                 G2    4   R    t1
                 G1    15  G    t1
                 G2    32  G    t1
             ",header=TRUE)

spread(t,dye,ex) %>% 
    mutate(dye.ratio = G/R) %>%
    select(-G,-R) 

##   gene time dye.ratio
## 1   G1   t0  2.500000
## 2   G1   t1  2.500000
## 3   G2   t0  8.333333
## 4   G2   t1  8.000000

是否有一种更惯用的方式来执行这项非常基本的任务,甚至可能只需要三个以上的陈述?

0 个答案:

没有答案