如果Random.length
的值落入基於data.frame Data$Measure
的給定區間,我想分配值(概率)。根據R中的區間分配值
樣本數據:
set.seed(123)
Data <- data.frame(Measure=sort(rnorm(10,5,2),decreasing=FALSE),
Probability=sort(runif(10,0,1),decreasing=FALSE))
Random.length <- as.vector(sort(rnorm(5,5,2),decreasing=FALSE))
在這裏,我想能夠概率分配給從data.frame Data
相對應的值的Measure
矢量Random.length
。
這是我試過的。它有點作品。 (僅不如來說明我的意思....)
AssignValue <- function (x,y,z){
CopyNumber <- rep(0, length(x))
for(i in 1:length(x)){
if(x[i] <= y[1]) { CopyNumber[i] <- z[1]
} else if(x[i] > y[1] & x[i] < y[2]) { CopyNumber[i] <- z[2]
} else if(x[i] > y[2] & x[i] < y[3]) { CopyNumber[i] <- z[3]
} else if(x[i] > y[3] & x[i] < y[4]) { CopyNumber[i] <- z[4]
} else if(x[i] > y[4] & x[i] < y[5]) { CopyNumber[i] <- z[5]
} else if(x[i] > y[5] & x[i] < y[6]) { CopyNumber[i] <- z[6]
} else if(x[i] > y[6] & x[i] < y[7]) { CopyNumber[i] <- z[7]
} else if(x[i] > y[7] & x[i] < y[8]) { CopyNumber[i] <- z[8]
} else if(x[i] > y[8] & x[i] < y[9]) { CopyNumber[i] <- z[9]
} else if(x[i] > y[9]) { CopyNumber[i] <- z[10]
}
}
CopyNumber
}
AssignValue(Random.length,Data$Measure,Data$Prob)
現在我data.frame Data
是一個長度爲51,因此實際環路我是高達... Z [51]基本掃描通過整個數據框架。我只是縮短了這個示範。所以實際的解決方案應該能夠應付可能的任意長度。
此外,解決方案應該能夠使用任意長度的矢量。
編輯:循環結束時的小錯誤,現在糾正。
我認爲你正在尋找的'cut'功能。 – Justin
我知道功能'切',但不認爲它在這裏適合... – Maximilian
你一定要找切。 –