[英]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.