我有一個數據框組成的吸收光譜從多個樣本運行(樣本a,b,c,d) ,其中Ydata是波長,Xdata是吸收。我正在計算基線校正吸收,方法是從感興趣的峯值中減去安靜波長範圍內的平均吸收值。我怎樣才能操縱一個因素水平的數據框中的一個子集的另一個因素在一個數據框沒有循環
簡化數據幀:
DF <- data.frame(
group = rep(c("a", "b", "c", "d"),each=10),
Ydata = rep(1:10, times = 4),
Xdata = c(seq(1,10,1),seq(5,50,5),seq(20,11,-1),seq(0.3,3,0.3)),
abscorr = NA
)
我需要更正減去運行中的子集化的波長範圍的平均運行每個樣品。我一直在做這樣說:
for (i in 1:length(levels(DF$group))){
sub1 <- subset(DF, group == levels(DF$group)[i], select = c(group, Ydata,
Xdata));
sub2 <- subset(sub1, Ydata > 4 & Ydata < 8, select = c(group, Ydata,
Xdata));
sub1$abscorr <- sub1$Xdata - mean(sub2$Xdata);
DF <- rbind(sub1, DF);
}
,然後收拾所有的「NA的
DF <- na.omit(DF)
上面做的方式是使用循環明顯笨重。是否有更好的方法去處理大數據集的這個任務?也許dplyr?
謝謝MT!工作一種享受。我無法理解dplyr軟件包的工作方式。 – Jordan