问题是您的数据文件将所有值括在引号中,如下所示:
"age", "height", "menarche", "sex", "igf1", "tanner", "testvol", "weight"
"NA", "NA", "NA", "NA", "90.0", "NA", "NA", "NA"
"NA", "NA", "NA", "NA", "88.0", "NA", "NA", "NA"
当 R 读取它时,它将所有值作为字符串,默认情况下表示为因子。 NAs 只是作为这些因素的一个级别的标签。你可以通过str看到这个:
> str(importData)
'data.frame': 1339 obs. of 8 variables:
$ age : num NA NA NA NA NA 0.17 0.17 0.17 0.17 0.17 ...
$ height : Factor w/ 600 levels " 110.8"," 111.5",..: 600 600 600 600 600 600 600 600 600 600 ...
$ menarche: Factor w/ 3 levels " 1"," 2"," NA": 3 3 3 3 3 3 3 3 3 3 ...
$ sex : Factor w/ 3 levels " 1.00"," 2.00",..: 3 3 3 3 3 1 1 1 1 1 ...
$ igf1 : Factor w/ 501 levels " 100.0"," 101.0",..: 490 487 53 55 23 2 498 6 10 474 ...
$ tanner : Factor w/ 6 levels " 1"," 2"," 3",..: 6 6 6 6 6 1 1 1 1 1 ...
$ testvol : Factor w/ 26 levels " 1"," 10"," 11",..: 26 26 26 26 26 26 26 26 26 26 ...
$ weight : Factor w/ 518 levels " 14.1"," 17.9",..: 518 518 518 518 518 518 518 518 518 518 ...
所以在不考虑因素的情况下读取您的数据,所有因素都读取为数字:
> importData <- read.csv("http://people.sc.fsu.edu/~jburkardt/datasets/iswr/juul2.csv",
stringsAsFactors=F, na.strings=c(NA,"NA"," NA"))
> str(importData)
'data.frame': 1339 obs. of 8 variables:
$ age : num NA NA NA NA NA 0.17 0.17 0.17 0.17 0.17 ...
$ height : num NA NA NA NA NA NA NA NA NA NA ...
$ menarche: int NA NA NA NA NA NA NA NA NA NA ...
$ sex : num NA NA NA NA NA 1 1 1 1 1 ...
$ igf1 : num 90 88 164 166 131 101 97 106 111 79 ...
$ tanner : int NA NA NA NA NA 1 1 1 1 1 ...
$ testvol : int NA NA NA NA NA NA NA NA NA NA ...
$ weight : num NA NA NA NA NA NA NA NA NA NA ...
现在删除NAs:
> data <- importData[complete.cases(importData[c("age","height","weight","igf1")]),]
> str(data)
'data.frame': 858 obs. of 8 variables:
$ age : num 6 6.08 6.26 6.4 6.42 6.43 6.61 6.63 6.7 6.72 ...
$ height : num 112 117 120 116 116 ...
$ menarche: int NA NA NA NA NA NA NA NA NA NA ...
$ sex : num 1 1 1 1 1 1 1 1 1 1 ...
$ igf1 : num 98 242 196 179 126 142 236 148 174 136 ...
$ tanner : int 1 1 1 1 1 1 1 1 1 1 ...
$ testvol : int 1 1 1 1 1 1 1 2 1 1 ...
$ weight : num 19.1 21.7 24.7 19.6 20.6 20.2 28 21.6 26.1 22.6 ...