2016-12-21 16 views
0

あるデータフレームの特定のセルを別のデータフレームの特定のセルで分割したいと考えています。R:別のデータフレーム内のあるセルによって特定のセルを1つのデータフレームに分割する

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,しかし、それは私が必要とするものではありません - 任意の支援が大歓迎です。

ここには少しのデータがあります。私はDataframe2の対応する行を見つける必要が

Compound_Number Compound_Concentration Time Technical_Replicate Colony_Count 
1 0.1 mM 5 4 46000000 

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 Technical_Replicate Time Replicate_Mean 
1 4 5 630000000 

そして、私が630000000.

で4600万を分割したい場合は、事前にありがとうございます。

+3

3つの列のデータフレームをマージするだけです...?その後、分割する。 – sirallen

+0

@sirallen - OFコース!問題が解決しました。ありがとうございました。 – cer

答えて

-1

私はこれを信用できませんが(私は最終的にそこに入ったと思いますが)。

NEW_DF <- merge(corpus, normalizing_means) 

それから容易別ずつ列を分割することができます。

ありがとう@sirallen。

関連する問題