簡體   English   中英

對R中的分組數據使用近似函數

[英]Using approx function on grouped data in R

我有一個包含ID,Vg,Device,Die,W,L和其他列的大數據集(與該問題無關)。 我想以給定的Id值對Vg進行插值,但是必須對按“設備”和“模具”列分組的數據執行此操作。

我的樣本數據看起來像

Die     Device      Id      Vg     W   L 
  1    Device1       1       0    10   1  
  1    Device1     1.2     0.1    10   1  
  1    Device1     1.3     0.2    10   1
  1    Device2       1       0    10   2
  1    Device2     1.2     0.1    10   2  
  1    Device2     1.3     0.2    10   2
  1    Device3       1       0    10   3
  1    Device3     1.2     0.1    10   3  
  1    Device3     1.3     0.2    10   3

每個芯片具有22個獨特的器件。 有67個管芯,每個管芯上的22個設備名稱相同。 因此,如果我對Id = 1.25的Vg進行插值,則我期望對Id = 1.25的Vg獲得22 * 67的值。

這是我正在嘗試的代碼

data_tidy%>%
  group_by(Die,Device)%>% #Die is numeric, Device is factor
  mutate(Vt=approx(x=log10(Id),y=Vg,xout=log10(3e-8*W/L))$y)

這類似於此處建議的內容,我正在從下面的鏈接中復制建議的代碼

df %>%
  group_by(variable) %>%
  arrange(variable, event.date) %>%
  mutate(time=seq(1,n())) %>%
  mutate(ip.value=approx(time,value,time)$y) %>%
  select(-time)

但是,當我在上面執行代碼時,我收到一條錯誤消息,提示

錯誤:無法復制大小為18的向量

這是一個data.table解決方案:

library(data.table)
f <- function(x) setDT(df)[,approx(Id,Vg,x), by=list(Device,Die)]
f(1.25)
#     Device Die    x    y
# 1: Device1   1 1.25 0.15
# 2: Device2   1 1.25 0.15
# 3: Device3   1 1.25 0.15

此處,列y是插值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM