我有一些R中的数据,它包含缺少数据的特殊字符串。我想subset
原始数据帧为有效数据和一个只有缺失数据。检测因子级别是数字还是R中的字符串
在下面的示例中,我有一些数字值和缺少数据的两个字符串(MD1
和MD2
)。
DF <- data.frame(x = c(1, 2, 3, "MD1", 5, "MD2"))
如果只有几个这样的字符串,我可以列举出来,并提取子集(这不是我是如何做到的,但它是简单而符合这个问题的目的):
DF.invalid <- droplevels(subset(DF, x == "MD1" | x == "MD2"))
DF.valid <- subset(DF, x != "MD1" & x != "MD2")
DF.valid$x <- as.numeric(levels(DF.valid$x))[DF.valid$x]
我的问题是,缺少的数据字符串可能不会提前知道。是否有适当的(优雅的)方法来检测MD1
和MD2
是否为非数字并实现此结果,而不检查数据框并枚举非数字级别?
做'as.numeric(levels(df $ x)[df $ x])',那些变成'NA'的是非数字的。 –