如果给定列中的行为空或NA,我如何从数据框中对行进行子集化 . 例如:
x <- c(1,2,3,4,"","","")
y <- c("A","B","C","D","E","F","G")
z <- c(100,200,300,400,500,600,700)
xyz <- data.frame(x,y,z)
View(xyz)
g1 <- subset(xyz, subset=(x > 0))
返回:
警告消息:在Ops.factor(x,0)中:>对因子没有意义
如何让它返回一个新数据框,该数据框是原始的一个子集,但只包含X列大于零的行?
2 回答
因为
x
存储为一个因子,所以大于一个值在这里没有任何意义 . 您可以使用索引:NA
与""
不同,您可以使用is.na()
对其进行逻辑测试 . 因此,如果在这种情况下的值是NA
而不是""
,xyz[!is.na(xyz$x),]
会做的伎俩创建数据框时,您指定
x
应该是因子变量 .(从技术上讲,你指定它应该是字符,但
data.frame
已经读过你的想法并将其转换为你的因素 . 再次,从技术上讲,你没有将它们全部强制转换为字符模式的向量 . )因此,"greater than zero"不会阅读你的想法,并得出结论,你实际上希望
x
是数字,但允许值不可用的情况 . 在那种情况下,你应该这样做