仅为子集

时间:2017-09-01 10:05:53

标签: r

我有一个名为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进行逐点逆回归:

function_to_observe(150)

这会产生结果

[1] 360.6395

,它应存储在Fitted_Voltage列中的数据帧中,用于单个serial_number

然后将安装下一个serial_number 812009897,并为其一次又一次地存储该值..

我知道我可以将值添加到列中,但不限于子集:

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

更新:根据Eric 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]

这非常有效但我需要应用一些细微的变化。这对我来说不是那么轻微..

1。)必须自动添加Serial_numbers(以“ID,ID2”两个示例的形式给出)

2。)因为我删除了电压,所以我没有开始运行。很抱歉没有在我之前的问题中指明这一点。电压不感兴趣,我只想在结束帧中的Serial_number和Fitted_Voltage,它们彼此属于。

1 个答案:

答案 0 :(得分:1)

对我来说function_to_observe的作用不太清楚。我假设您“利用”给定Serial_Number的电压值集。

我准备了一个小函数,它有一个额外的参数(值)。

以下是否回答了您的问题?

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]

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

(是的,我知道这里的合适电压与电压完全无关......只是不明白你的150在这里做什么)