簡體   English   中英

R 帶有隨機值的條件 IfElse

[英]R Conditional IfElse With Random Values

data1 = data.frame("Cat" = c(8,4,3,7),
                   "Dog"=c(4,7,10,5),
                   "Want"=NA)

data1$Try = ifelse(data1$Dog > data1$Cat, (data1$Dog - data1$Cat) * (1-runif(1, 0.5, 0.9)), -99)

我希望用這條規則創建“想要”:如果 Dog > Cat,“Want” = (Dog - Cat) * (1-runif(1, 0.5, 0.9))

但是,當我使用“Try”執行此操作時,它使用相同的隨機“runif”值,但是,每次 Dog > Cat 我希望從“runif”生成一個新值,而不是每次都使用相同的值。

data1 = data.frame("Cat" = c(8,4,3,7),
                   "Dog"=c(4,7,10,5),
                   "Want"=NA)

data1 <- within(data1, Want2 <- ifelse(Dog-Cat>0,(Dog-Cat)*(1-runif(1, 0.5, 0.9)),-99))
data1$Dif = (data1$Dog - data1$Cat)/data1$Want2

我希望每次狗 > 貓時這個比例都不同

您可以通過sample來做到這一點:

data1$Want = ifelse(data1$Dog > data1$Cat, 
                (data1$Dog - data1$Cat) * (1-runif(sample(1:10,1, replace = T), 0.5, 0.9)), -99)

你可以試試ifelse像下面

data1 <- within(data1, Want <- ifelse(Dog-Cat>0,(Dog-Cat)*(1-runif(nrow(data1), 0.5, 0.9)),-99))

我們可以使用case_when

library(dplyr)
data1 %>% 
   mutate(Want = case_when(Dog > Cat ~ (Dog - Cat)* 
      (1 - runif(sample(1:10,1, replace = T), 0.5, 0.9)), TRUE ~ -99))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM