我需要幫助編碼以下內容:我想從「s」的第一列中隨機採樣值並添加這些值,直到它們的總和等於第一,第二等行的第一列「dat」的行,從「s」的SECOND列中隨機採樣值並添加這些值,直到它們的總和等於「dat」的SECOND列的第一,第二等行,重複此操作處理所有6列。最終輸出應該與dat的結構匹配,並且包含滿足「dat」中每個單元的標準的「s」的行數。一個數據集的總行數滿足R中其他數據集的條件
這是我想要的一個近似值 - 通過代碼只對第一列「dat」的單個單元格和第一個「s」的第一列,因爲我無法索引「s」和「DAT」。
set.seed(1234)
dat<-matrix(rnorm(30, 50, 10), ncol=5)
dat<-as.data.frame(round(dat))
dat.V1<-dat[,1]
s<-matrix(rnorm(60, 7, 2), ncol=5)
s<-as.data.frame(s)
s.V1<-s[,1]
total <- 0
result <- 0
while (result<= dat.V1[1]) {
result_ind = sum(result + s.V1[sample(s.V1, 1)])- result
result = result + s.V1[sample(s.V1, 1)]
total = total + 1
if(result == dat.V1[1]) break
}
allout<-cbind(dat.V1[1], result, total)
allout
result total
[1,] 38 41.47509 7
這裏dat.V1 [1] = 38,隨機值從s.V1總和= 41.47509(我想要的值s.V1≈dat.V1 [1],但足夠接近)中,用滿足該單元的標準的s.V1 = 7的計數。提前感謝!
請將'set.seed(1234)'添加到您的代碼中。隨機數字的產生是最好的做法,添加這段代碼,以使數字可重現。 – SabDeM
我很困惑你的情況意味着什麼。例如總和相等的概率爲0. – MichaelChirico
如果'cumsum'從不> =您的閾值之一,該怎麼辦? –