我在公寓楼里进行各种测试,需要添加一个因子(Etapp <i>
)来指示观测所属的测试阶段。
我创建了一个包含测试阶段和相应的开始和结束日期的矩阵。
phases <-matrix(c(t1,t2,t2,t3), ncol = 2,
dimnames = list(c("Etapp I", "Etapp II"), c("Start","Stopp")), byrow = TRUE)
> phases
Start Stopp
Etapp I 16812 16827
EtappII 16827 16841
变量t1,t2,...包含测试阶段的断点,如POSIXct
主数据框采用宽格式,包含一个日期(Tid)列作为观察ID。大小在40-50个变量中是几千个观测值的数量级,其中只有日期在这里很重要。
我的计划是为此创建一个功能,因为我有几个建筑物,每个建筑物都有自己的观测数据框。该函数将采用两个参数构建数据框和上述矩阵阶段,并返回一个添加了因子的数据帧。
addPhase <- function(df, ph) {
# Merge new variable using dplyr::merge()
}
如何根据多级因子中的时间来考虑这些观察结果。我设法使用逻辑矢量设置单个测试阶段的因子,如下所示
factor(as.Date(VitaHusen$Tid) > t1 & as.Date(VitaHusen$Tid) < t2,
labels = c("","Etapp I"))
如何将其扩展到几个时间范围? 我可以使用阶段中的dimnames为我的新因子列设置因子水平吗?
答案 0 :(得分:0)
我最终得到了以下功能
var2 = 'This is my second variable'
def source_func1(x):
print(x)
对于我的一个测试对象Vimpeln,调用看起来像
addPhase <- function(df, ph, varName) {
ph_names <- rownames(ph)
for (i in ph_names) { # Iterate for all phases in matrix ph
ph_start <- ph[i,1] # Extract start date
ph_end <- ph[i,2] # Extract end date
# Assign name of phase to matching rows
df[as.Date(df$Tid) > ph_start & as.Date(df$Tid) < ph_end, varName] <- i
}
df[[varName]] <- as.factor(df[[varName]]) # Convert to factor
return(df)
}
添加因子变量&#34; Fas&#34;到数据框&#34; Vimpeln&#34;根据矩阵中给出的日期&#34;阶段&#34;如所定义的那样。