我想将一个数据帧中的某些单元格划分为另一个数据帧中的某些单元格。
Dataframe1 - 数据集中的列名称为:Compound_Number,Compound_Concentration,Time,Technical_Replicate和Colony_Count。总共有12种化合物,3种浓度,3个时间点和6个技术重复。
Dataframe2 - 列名称为Compound_Number,Technical_Replicate,Time和Replicate_Mean。总共有12种化合物,3个时间点和1个重复平均值。
我需要将Dataframe1中的Colony_Count除以Dataframe2中的Replicate_Mean - 但我需要确保除法以成对方式进行(例如,化合物编号必须相同,以及时间和技术复制)。
我知道我可以手工完成所有这些......
#Dataframe1 (corpus)
C1_T1_TR1 <- corpus[ which(corpus$Compound_Number==1 & corpus$Technical_Replicate==1 & corpus$Time==1),]
#Dataframe2 (normalizing_means)
NC1_T1_TR1 <- normalizing_means[ which(normalizing_means$Compound_Number==1 & normalizing_means$Time==1 & normalizing_means$Technical_Replicate==1),]$Replicate_Mean
然后我可以做......
C1_T1_TR1$Colony_Count/N1_T1
然而,这意味着多次写出这些行以捕获所有化合物,重复和时间 - 然后将所有这些选择和操作的结果合并回一个数据帧。这很麻烦,我确信有更好的R方式。我确实看到了这个:https://stackoverflow.com/questions/33150534/divide-multiple-columns-of-one-data-frame-by-row-names-value-of-another-datafram,但它并不是我所需要的 - 非常感谢任何帮助。
这是一些数据。
Dataframe1
Compound_Number Compound_Concentration Time Technical_Replicate Colony_Count
1 0.1 mM 5 4 46000000 #This is the example line
1 0.05 mM 5 4 109000000
1 0.02 mM 5 4 220000000
1 0.1 mM 25 4 30000
1 0.05 mM 25 4 16000000
1 0.02 mM 25 4 340000000
1 0.1 mM 1 1 5000000
1 0.05 mM 1 1 220000000
1 0.02 mM 1 1 210000000
1 0.1 mM 5 1 9000000
1 0.05 mM 5 1 70000000
1 0.02 mM 5 1 57000000
1 0.1 mM 5 2 560000
1 0.05 mM 5 2 34000000
1 0.02 mM 5 2 300000000
1 0.1 mM 25 2 10000
2 0.05 mM 1 3 120000000
2 0.02 mM 1 3 210000000
2 0.1 mM 5 3 280000000
2 0.05 mM 5 3 240000000
2 0.02 mM 5 3 80000000
2 0.1 mM 25 3 110000000
2 0.05 mM 25 3 250000000
2 0.02 mM 25 3 350000000
2 0.1 mM 1 4 290000000
2 0.05 mM 1 4 340000000
2 0.05 mM 1 1 300000000
2 0.02 mM 1 1 110000000
2 0.1 mM 5 1 510000000
2 0.05 mM 5 1 420000000
Dataframe2
Compound_Number Technical_Replicate Time Replicate_Mean
1 1 1 288000000
1 1 5 232000000
1 1 25 230000000
1 2 1 351666666.666667
1 2 5 320000000
1 2 25 291666666.666667
1 3 1 570000000
1 3 5 493333333.333333
1 3 25 701666666.666667
1 4 1 425000000
1 4 5 630000000 #This is the example line
1 4 25 380000000
1 5 1 473333333.333333
1 5 5 463333333.333333
1 5 25 433333333.333333
1 6 1 478333333.333333
1 6 5 453333333.333333
1 6 25 520000000
2 1 1 391666666.666667
2 1 5 356666666.666667
2 1 25 373333333.333333
2 2 1 445000000
2 2 5 423333333.333333
2 2 25 353333333.333333
2 3 1 248333333.333333
2 3 5 281666666.666667
2 3 25 151666666.666667
2 4 1 325000000
2 4 5 360000000
2 4 25 420000000
2 5 1 156666666.666667
2 5 5 298333333.333333
2 5 25 338333333.333333
2 6 1 313333333.333333
2 6 5 318333333.333333
2 6 25 276666666.666667
为清楚起见,这是Dataframe1的一个示例行:
Compound_Number Compound_Concentration Time Technical_Replicate Colony_Count
1 0.1 mM 5 4 46000000
我需要在Dataframe2中找到相应的行。
Compound_Number Technical_Replicate Time Replicate_Mean
1 4 5 630000000
我想将46000000除以630000000。
提前谢谢。
答案 0 :(得分:-1)
我不能相信这一点(虽然我希望我最终能够到达那里)。
NEW_DF <- merge(corpus, normalizing_means)
然后我可以轻松地将一列与另一列分开。
感谢@sirallen。