我正在尝试在R数据帧中根据另一个变量的值来确定变量的值,但无法做到这一点。
基本上,我将3种不同的疫苗Dose
分配给三组动物(每组5只动物(Total
),并将结果记录为Protec
,这意味着每种动物中受保护的动物数量组。根据{{1}},我正在计算每个Protec
组的保护比例(Protec / Total为Prop
。例如
Dose
问题是,library(dplyr)
Dose=c(1,0.25,0.0625);Dose #Dose or Dilution
Protec=c(5,4,3);Protec
Total=c(rep(5,3));Total
df=as.data.frame(cbind(Dose,Protec,Total));df
df=df %>% mutate(Prop=Protec/Total);df
的{{1}}的最小值的log10是多少,可以使用以下代码找到
Dose
结果应为X0 = 0
如果Prop==1
,X0=log10(min(df$Dose[df$Prop1==1.0]));X0
变成c(1.0,1.0,0.6),则X0应该是-0.60206。
如果Protec=c(5,5,3)
,则Prop
变成c(1.0,1.0,1.0),为此我希望X0 = 0。
如果Protec=c(5,5,5)
的{{1}}变成c(1.0,0.8,1.0),那么我也希望X0 = 0,因为我认为它们是无序的,并且采用最高剂量来计算X0
我认为这需要if函数,但是我不知道如何编写代码的条件。
有人可以在R中解释如何做吗?先谢谢你
答案 0 :(得分:1)
我们可以使用mutate_at
创建将计算应用于列名称以'Protec'开头的多列
library(dplyr)
df1 <- df %>%
mutate_at(vars(starts_with("Protec")), list(Prop = ~./Total))