0

我有一个数据框,其中包含 [0,1] ( df$Estimate) 上的一列值和中断值的四列 ( df$V1-4);每行的形式为c(0, [somevalue], 0.8, 1). 对于 中的每个值df$Estimate,我想将其行的值传递df$V1-4给 cut 函数。

使用 for 循环版本的解决方案复制示例的代码:

nrow <- 10
set.seed(1)
df <- data.frame(Estimate = runif(nrow), V1 = 0, 
                 V2 = runif(nrow, 0.1, 0.75), 
                 V3 = 0.8, V4 = 1)
bins <- vector(length = nrow(df))
for (i in 1:nrow(df)) {
    bins[i] <- cut(df$Estimate[i], df[i, grep("V[0-9]", colnames(df))])
}

所以我有一个笨拙的解决方案,但正确的方法是什么?

4

2 回答 2

3

我不知道这是否是正确的方法,但一种可能性是使用findInterval

apply(df, 1, function(v) { findInterval(v[1], v[2:5]) })
于 2013-01-25T20:48:41.733 回答
1

另一个apply使用cut仍然的解决方案:

 apply(df,1,function(x) cut(x[1],x[-1],labels = FALSE))
于 2013-01-25T20:49:12.830 回答