r - 用随机值替换列值
问题描述
大家好,我正在尝试用一定范围内的随机数值替换数据框中的某个值。
下面提供了示例数据框,我想用 0 到 0.1 之间的值替换所有数字 3。
df <- data.frame(datay = sample(1:5, 10, replace = TRUE),
dataz = sample(1:10, 10, replace = TRUE))
输入:
datay dataz
1 5 8
2 5 3
3 2 1
4 5 10
5 4 5
6 1 6
7 1 8
8 3 2
9 3 9
10 3 4
输出:
datay dataz
1 5 8
2 5 0.05
3 2 1
4 5 10
5 4 5
6 1 6
7 1 8
8 0.05 2
9 0.02 9
10 0.01 4
解决方案
我们还可以runif
用来生成两个值之间的随机数。
inds <- df$datay == 3
df$datay[inds] <- runif(sum(inds), 0, 0.001)
df
# datay dataz
#1 0.000555 k
#2 5.000000 v
#3 4.000000 n
#4 2.000000 q
#5 1.000000 l
#6 2.000000 n
#7 0.000121 u
#8 0.000794 z
#9 1.000000 x
#10 2.000000 d
编辑
为了对所有列执行此操作,我们可以这样做
mat <- which(df == 3, arr.ind = TRUE)
#If you need only for selected columns say for first two columns do
#mat <- which(df[1:2] == 3, arr.ind = TRUE)
df[mat] <- runif(nrow(mat), 0, 0.001)
df
# datay dataz
#1 5.000000 8.00000
#2 5.000000 0.00078
#3 2.000000 1.00000
#4 5.000000 10.00000
#5 4.000000 5.00000
#6 1.000000 6.00000
#7 1.000000 8.00000
#8 0.000144 2.00000
#9 0.000965 9.00000
#10 0.000771 4.00000
推荐阅读
- swiftui - Swiftui:如何重置布尔状态?
- google-cloud-platform - DataProc 对云存储中受自定义托管 HSM 密钥保护的数据的大量 DecryptRequest 请求
- python-3.x - 获取列表中每个元素到任何其他元素的距离
- php - wp_nav_menu 什么都不返回
- python - on_key_press() 事件阻塞 on_mouse_press() 和 on_mouse_motion() 事件 1 秒
- python-3.x - discord.py 发送 BytesIO
- node.js - 来自 npm 而不是工作区的纱线安装包
- javascript - React:为什么我的上下文值没有更新?
- angular - Angular 项目不适用于 Spring Boot
- javascript - 我想防止用户在数组中输入重复值