2017-09-01 7 views
0

APDと呼ばれるデータフレームがあり、 "Fitted_voltage"列に値を割り当てたいが、特定のサブセット(serial_numberでグループ化されている) 。それ、どうやったら出来るの? 次の例では、私はFitted_Voltage 150を割り当てたいだけSERIAL_NUMBER 913009814.サブセットのみのデータフレーム内の列に値を追加

Serial_number Lot Wafer Amplification Voltage Fitted_Voltage 
912009913 9 912 1878 375.3 NA 
912009913 9 912 1892 376.8 NA 
912009913 9 912 1900 377.9 NA 
812009897 8 812 3931.1 370.5 NA 
812009897 8 812 3934.8 371 NA 
812009897 8 812 3939.9 372.3 NA 
... 
... 

のために最後に、私はこれを自動的に行うしたいと思います。私はいくつかのデータ点に合っており、適合した結果を各serial_numberに割り当てる必要があります。

フィット関数function_to_observeを介して、シリアル番号912009913 150の特定の値にポイントワイズ逆回帰を行う: プロセスがあってもよい。これは、結果

[1] 360.6395 

をもたらす

function_to_observe(150) 

1つのserial_numberに対応するFitted_Voltageのデータフレームに格納される。

次に、次のserial_num BER 812009897が装着され、この値は、私は列に値を追加することができます知っているが、一部に限定されない...何度も何度も

をそれのために保存されなければならない。

APD["Fitted_Voltage"] <- Fitted_voltage<- function_to_observe(150) 

更新:は、私が今持っているエリックLecoutreの答えによると:

ID<- 912009913 
ID2<- 912009914 

APD_result<- data.frame(Serial_Number=rep(c(ID, ID2),each=1), Fitted_Voltage=NA) 

comp <- tapply(APD_result$Fitted_Voltage, APD_result$Serial_Number, function_to_observe = inverse((function(x=150) exp(exp(sum(x^0*VK[1],x^1*VK[2],x^2*VK[3],x^3*VK[4])))), 50, 375)) 

APD_result$Fitted_Voltage = comp[APD_result$Serial_Number] 

これは非常によく動作しますが、私はいくつかのマイナーな変更を適用する必要があります。 Serial_numbersは二つの例「ID、ID2」として与えられた(自動的に追加する必要があります)。..私のため

1.それほどマイナーれていない)

2)IはI以降に実行するtapplyを得ることはありません除去された電圧。私の前の質問でこれを指定しないと申し訳ありません。電圧は重要ではありません、私は、お互いに属しているエンドフレーム内のSerial_numberとFitted_Voltageだけを必要とします。

答えて

1

あなたのfunction_to_observeが何をしているか分かりません。私はあなたが指定した電圧値のセットを「悪用する」と仮定します。Serial_Number

追加の引数(値)を持つ小さな関数を用意しました。

あなたの質問には次の回答がありますか?

result 

    Serial_Number Voltage FittedVoltage 
1    a 21.01196  205.4419 
2    a 37.04815  205.4419 
3    a 108.26565  205.4419 
4    b 121.37657  264.3040 
5    b 39.92053  264.3040 
6    b 181.61485  264.3040 

として持つ

df <- data.frame(Serial_Number=rep(c("a","b"),each=3),Voltage=abs(100*rnorm(6)), FittedVoltage=NA) 
function_to_observe <- function(vec,value=150) {mean(vec)+value} 
comp <- tapply(df$Voltage, df$Serial_Number, function_to_observe, value=150) 
df$FittedVoltage = comp[df$Serial_Number] 

(ええ、私はここにフィット電圧は、電圧とは全く無関係である知っている...ちょうどあなたの150がここで何をするか理解していない)

+0

どうもありがとう!これは私が探しているものに見えます。現時点では、データフレームを作成するためのデータ構造は完全には準備ができていませんが、変更は私のために調整できると思います。だからもう一度たくさんありがとう! – Ben

+0

ああ、1つのことは私にとってはっきりしていない:さまざまなシリアル番号を入力するにはどうすればいいですか?あなたは「rep(c( "a"、 "b")」と書いています。私の場合は100個のシリアル番号があるので、何とか自動的に渡す必要があります。これをもう一度理解できますか?ありがとうございました! – Ben

+0

私は "調整"するためのいくつかのprobemsを持っています..私の更新を見てもいいですか? – Ben

関連する問題