0

[0,1]()の値の列とブレーク値のdf$Estimate4つの列( )を持つデータフレームがあります。df$V1-4各行の形式はc(0, [somevalue], 0.8, 1)。の値ごとに、その行の値をcut関数df$Estimateに渡します。df$V1-4

ソリューションの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 に答える