首页 > 解决方案 > 用范围内的随机数替换数据帧中的 NA

问题描述

我有以下名为的数据框cars

Brand      year     mpg        reputation      Luxury
Honda      2010     30            8.5            0.5
Honda      2011     28            8.5            0.6
Dodge      2010     20            6.5            0.6
Dodge      2011     23            7.0            0.7
Mercedes   2010     22            9.5            NA
Mercedes   2011     25            9.0            NA

我想用随机生成的实数替换 NA0.9 and 1.0

我正在尝试以下内容,但它正在用数字 0.9 替换 NA

cars[is.na(cars)] <-  sample(0.9:1, sum(is.na(cars)),replace=TRUE)

数据表将如下所示:

Brand      year     mpg        reputation      Luxury
Honda      2010     30            8.5            0.5
Honda      2011     28            8.5            0.6
Dodge      2010     20            6.5            0.6
Dodge      2011     23            7.0            0.7
Mercedes   2010     22            9.5           *0.91*
Mercedes   2011     25            9.0           *0.97*

数据结构代码:

cars <- structure(list(Brand = c("Honda","Honda", "Dodge", "Dodge","Mercedes","Mercedes"), 
   year = c(2010L, 2011L,2010L, 2011L, 2010L, 2011L), 
   mpg = c(30L, 28L, 20L, 23L, 22L, 25L), reputation = c(8.5, 8.5, 6.5, 7L, 9.5, 9.5), Luxury = c(5L, 5.5, 6L, 6.5)), 
  class = "data.frame", row.names = c(NA, -4L))      

标签: rdataframe

解决方案


使用runif而不是sample

cars[is.na(cars)] <-  runif(sum(is.na(cars)), min = 0.9, max = 1)

推荐阅读