在 R 中对分组数据使用近似函数
Using approx function on grouped data in R
我有一个大数据集,包含 Id、Vg、Device、Die、W、L 和其他列(与此问题无关)。我想在给定的 Id 值处对 Vg 进行插值,但必须对按列 Device 和 Die 分组的数据执行此操作。
我的样本数据看起来像
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 个 die,每个 die 上有 22 个 Device name 是相同的。因此,如果我为 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)
这类似于建议的 ,我正在从下面的 link 中复制建议的代码
df %>%
group_by(variable) %>%
arrange(variable, event.date) %>%
mutate(time=seq(1,n())) %>%
mutate(ip.value=approx(time,value,time)$y) %>%
select(-time)
但是,当我执行上面的代码时,我收到一条错误消息
Error: impossible to replicate vector of size 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
列是插值。
我有一个大数据集,包含 Id、Vg、Device、Die、W、L 和其他列(与此问题无关)。我想在给定的 Id 值处对 Vg 进行插值,但必须对按列 Device 和 Die 分组的数据执行此操作。
我的样本数据看起来像
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 个 die,每个 die 上有 22 个 Device name 是相同的。因此,如果我为 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)
但是,当我执行上面的代码时,我收到一条错误消息
Error: impossible to replicate vector of size 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
列是插值。