我有一个数据库作为名为“ data”的数据框,它包含500个对象和2个变量。 实际上
dim(data)
返回
[1] 500 2
和
str(data)
返回
'data.frame': 500 obs. of 2 variables:
$ Diagnosis : chr "D1" "D2" "D3" "D4" ...
$ Type : Factor w/ 8 levels "T1","T2",..: 6 4 1 6 1 4 4 4 5 5 ...
但是,当我尝试为特定的“诊断”检索“类型”的值时,例如“ D4”,除“类型”值外还会出现11个奇怪的NA值。实际上,似乎在此数据帧的每个单元中都有一个12个值的向量,其中11个是NA是凭空产生的。 反过来,
data[data$Diagnosis=='D4','Type']
返回:
[1] <NA> <NA> <NA> <NA> <NA> <NA>
[7] <NA> <NA> <NA> <NA> <NA> T6
有趣的是:
data[data$Diagnosis=='D4',]
返回:
Diagnosis Type
NA <NA> <NA>
NA.1 <NA> <NA>
NA.2 <NA> <NA>
NA.3 <NA> <NA>
NA.4 <NA> <NA>
NA.5 <NA> <NA>
NA.6 <NA> <NA>
NA.7 <NA> <NA>
NA.8 <NA> <NA>
NA.9 <NA> <NA>
NA.10 <NA> <NA>
503 D4 T6
该数据框是在excel中创建的,然后将其导入到R Studio中,此后我对该数据框进行了许多更改。
我有两个问题:
data[data$Diagnosis=='D4','Type']
返回:
[1] T6
和:
data[data$Diagnosis=='D4',]
要重新调谐:
Diagnosis Type
[row number] D4 T6
我无法在整个数据帧中使用omit.na(data)complete.cases(),因为我有一些我不想删除的合法NAs
答案 0 :(得分:0)
我认为这种解释会有所帮助。
如您所见,Type
列不是character
,而是factor
因此,在R中,在幕后将其视为categorical field
。如您所见,它将级别显示为整数。因此,如果尝试访问该值,它将返回级别,而不是该值。您需要先将Type
列转换为字符。然后进行操作
df$Type <- as.character(df$Type)