首页 > 解决方案 > 用 R 中的随机值替换 1

问题描述

prob=structure(list(x1 = c(0.04, 0.05, 0.1, 0.01, NA, NA, NA, NA, 
NA, NA, NA), x2 = c(0.08, 0.04, 0.05, 0.05, NA, NA, NA, NA, NA, 
NA, NA), x3 = c(0.08, 0.04, 0.09, 0.04, NA, NA, NA, NA, NA, NA, 
NA), x4 = c(0.03, 0.1, 0.08, 0.07, NA, NA, NA, NA, NA, NA, NA
), x5 = c(7.32, 0.05, 0.04, 1.64, NA, NA, NA, NA, NA, NA, NA)), .Names = c("x1", 
"x2", "x3", "x4", "x5"), class = "data.frame", row.names = c(NA, 
-11L))

如何在 x5 列中,如果 value>1 然后用 0.55 到 0.9 的随机值替换?

输出

     x1   x2   x3   x4   x5
1  0.01 0.06 0.06 0.02 **0.60**
2  0.10 0.05 0.08 0.03 0.01
3  0.03 0.02 0.02 0.04 0.02
4  0.07 0.08 0.10 0.03 **0.89**

标签: rdplyr

解决方案


我们可以用

 library(dplyr)
 prob %>%
       mutate(x5 = replace(x5, !is.na(x5), 
        sample(seq(0.55, 0.9, by = 0.1), sum(!is.na(x5)))

推荐阅读