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