问题描述
我有以下数据框
x <- data.frame("treatment"= c(1,1,2,2),"Time" = c(0,30,60,180,180),"cells_alive" = c(500,470,100,20,476,310,99,2))
在此实验中,我有两种治疗方法,即测量一段时间内存活细胞的数量。在时间0的细胞数是该处理的初始细胞数。我需要在新列中每次计算存活细胞的百分比。因此,在处理1的情况下,它将是500 / 500、470 / 500、100 / 500,依此类推。关于如何计算这个的任何想法?
谢谢
解决方法
require(tidyverse)
x %>%
left_join(x %>% select(treatment,cells_alive) %>%
group_by(treatment) %>%
top_n(1) %>%
ungroup(),by = "treatment") %>%
mutate(cells_alive_per = cells_alive.x/cells_alive.y)
,
使用override_background_color(gtk.StateFlags.SELECTED,rgba)
data.table
,
在发布dplyr
和data.table
版本之后,出于完整性考虑,这里不需要安装软件包:
stack(tapply(x$cells_alive,x$treatment,function(ca) ca / ca[1] ))
给出
> stack(tapply(x$cells_alive,function(ca) ca / ca[1] ))
values ind
1 1.000000000 1
2 0.940000000 1
3 0.200000000 1
4 0.040000000 1
5 1.000000000 2
6 0.651260504 2
7 0.207983193 2
8 0.004201681 2