当所有值都在R中的数据框的同一列中时,计算百分比

问题描述

我有以下数据框

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
,

在发布dplyrdata.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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...