R 如何在组别内进行分层
我想用变量对组_的类别运行分层函数,但该函数似乎忽略了组。我想原因是,一旦我使用pull函数,它就忽略了groupby变量。但是如果我不使用pull函数,stratify就不知道我想在变量areavariable上执行它。我怎样才能修好它?谢谢R 如何在组别内进行分层,r,R,我想用变量对组_的类别运行分层函数,但该函数似乎忽略了组。我想原因是,一旦我使用pull函数,它就忽略了groupby变量。但是如果我不使用pull函数,stratify就不知道我想在变量areavariable上执行它。我怎样才能修好它?谢谢 stratify <- function(x, strata, breaks) { h <- hist(x, plot = FALSE, breaks = breaks) g <- length(h$counts) z &l
stratify <- function(x, strata, breaks) {
h <- hist(x, plot = FALSE, breaks = breaks)
g <- length(h$counts)
z <- data.frame(
lower = rep(NA, g),
upper = rep(NA, g),
freq = h$counts,
sqrtf = sqrt(h$counts),
csqrtf = cumsum(sqrt(h$counts)),
stratum = NA)
k <- 1:(strata - 1) * max(z$csqrtf)/strata
sizebound<-rep(NA, strata - 1)
for (i in 1:g) {
z$lower[i] <- h$breaks[i]
z$upper[i] <- h$breaks[i + 1]
}
for (i in 1:(strata - 1)) {
tmp <- which(abs(z$csqrtf - k[i]) == min(abs(z$csqrtf - k[i])))
z$stratum[c(1:g) <= tmp & is.na(z$stratum)] <- i
sizebound[i]<-z$upper[c(1:g) == tmp]
}
z$stratum[is.na(z$stratum)] <- strata
out1 <-list(z, sizebound)
return(out1)
}
strata_num <- 3 #USER INPUT
stratvar="areavariable" ##User Inputs
Stratum<-type_area2 %>% filter(Outlier_for_area==0 ) %>% group_by(licence_type) %>%
pull(!!as.symbol(stratvar)) %>% stratify(strata=strata_num, breaks=25)
Stratum
分层欢迎使用堆栈溢出。您可以将一个数据集作为代码的一部分共享,或者调整代码以使用R附带的数据集之一吗?不是答案,只是一句美学评论pull(!!as.symbol(stratvar))
=pull(stratvar)
也可以代替max(z$csqrtf)
=z$csqrtf[nrow(z)]
并始终使用矢量化赋值而不是循环,即:下限=h$breaks[1:g],上限=h$breaks[1:(g+1)]
欢迎使用堆栈溢出。您可以将一个数据集作为代码的一部分共享,或者调整代码以使用R附带的数据集之一吗?不是答案,只是一句美学评论pull(!!as.symbol(stratvar))
=pull(stratvar)
也可以代替max(z$csqrtf)
=z$csqrtf[nrow(z)]
并始终使用矢量化赋值而不是循环,即:lower=h$breaks[1:g],upper=h$breaks[1:g+1)]