R 用随机值替换数据帧中的值(NA存在)
考虑以下数据帧,然后用不同的随机值替换所有数据帧R 用随机值替换数据帧中的值(NA存在),r,R,考虑以下数据帧,然后用不同的随机值替换所有数据帧 a<- c(rep(1,5),rep(NA,6)) b<- c(rep(NA,5),rep(1,6)) dat<- cbind(a,b) dat a b [1,] 1 NA [2,] 1 NA [3,] 1 NA [4,] 1 NA [5,] 1 NA [6,] NA 1 [7,] NA 1 [8,] NA 1 [9,] NA 1 [10,] NA 1 [11,
a<- c(rep(1,5),rep(NA,6))
b<- c(rep(NA,5),rep(1,6))
dat<- cbind(a,b)
dat
a b
[1,] 1 NA
[2,] 1 NA
[3,] 1 NA
[4,] 1 NA
[5,] 1 NA
[6,] NA 1
[7,] NA 1
[8,] NA 1
[9,] NA 1
[10,] NA 1
[11,] NA 1
我们可以得到值为1的值的索引,然后使用runif将其替换为随机值
我们可以得到值为1的值的索引,然后使用runif将其替换为随机值
我们只需乘以runif,因为任何值乘以NA返回NA,而那些乘以1的值返回值
dat * runif(length(dat))
# a b
# [1,] 0.03501729 NA
# [2,] 0.73306529 NA
# [3,] 0.61079151 NA
# [4,] 0.79167747 NA
# [5,] 0.52095513 NA
# [6,] NA 0.01196499
# [7,] NA 0.45024003
# [8,] NA 0.79531526
# [9,] NA 0.82090048
#[10,] NA 0.63468136
#[11,] NA 0.83556364
我们只需乘以runif,因为任何值乘以NA返回NA,而那些乘以1的值返回值
dat * runif(length(dat))
# a b
# [1,] 0.03501729 NA
# [2,] 0.73306529 NA
# [3,] 0.61079151 NA
# [4,] 0.79167747 NA
# [5,] 0.52095513 NA
# [6,] NA 0.01196499
# [7,] NA 0.45024003
# [8,] NA 0.79531526
# [9,] NA 0.82090048
#[10,] NA 0.63468136
#[11,] NA 0.83556364
删除免费插入和避免使用可爱的短语和笑脸可能会在将来让更多的人提供帮助方面卓有成效。删除免费插入和避免使用可爱的短语和笑脸可能会在将来让更多的人提供帮助方面卓有成效。请您回答新添加的部分吗?@imi,如果您愿意的话保持dat不变。您可以先将其复制到新变量newdat。如果您想保持dat不变,请回答新添加的部分?@imi。您可以先将其复制到新变量newdat中。请回答新添加的部分好吗?请回答新添加的部分好吗?
newdat <- dat
inds <- which(newdat == 1)
newdat[inds] <- runif(length(inds))
# a b
# [1,] 0.589059571 NA
# [2,] 0.585798106 NA
# [3,] 0.268349643 NA
# [4,] 0.616500063 NA
# [5,] 0.007331229 NA
# [6,] NA 0.6506516
# [7,] NA 0.7121793
# [8,] NA 0.8127495
# [9,] NA 0.7795301
#[10,] NA 0.7475504
#[11,] NA 0.7159547
dat * runif(length(dat))
# a b
# [1,] 0.03501729 NA
# [2,] 0.73306529 NA
# [3,] 0.61079151 NA
# [4,] 0.79167747 NA
# [5,] 0.52095513 NA
# [6,] NA 0.01196499
# [7,] NA 0.45024003
# [8,] NA 0.79531526
# [9,] NA 0.82090048
#[10,] NA 0.63468136
#[11,] NA 0.83556364