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