从R中的数据帧子集设置空白行
如果给定列中的行为空或NA,如何从数据框中子集行。例如:从R中的数据帧子集设置空白行,r,dataframe,subset,R,Dataframe,Subset,如果给定列中的行为空或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) x因为x存储为一个因子,大于一个值在这里没有任何意义。您可以使用索引: xyz[xyz$x != "",] #
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)
x因为x
存储为一个因子,大于一个值在这里没有任何意义。您可以使用索引:
xyz[xyz$x != "",]
# x y z
# 1 1 A 100
# 2 2 B 200
# 3 3 C 300
# 4 4 D 400
NA
不同于”
,您可以使用is.NA()
对其进行逻辑测试。因此,如果本例中的值是NA
而不是”
,xyz[!is.NA(xyz$x),]
将在创建数据帧时起作用,您指定x
应为因子变量
(从技术上讲,您指定它应该是字符,但data.frame
读取了您的想法并将其转换为因子。同样,从技术上讲,您没有指定它应该是字符,但R读取了您的想法,因为您试图将数字和字符组合在一个向量中,所以它强制将它们全部转换为cha向量。)拉特尔模式。)
正因为如此,“大于零”在这种情况下作为比较运算符是没有意义的。我将读懂您的想法,并得出结论,您实际上希望x
是数字的,但考虑到该值不可用的情况。在这种情况下,您应该这样做
xyz$x <- as.numeric(as.character(xyz$x))
subset(xyz, !is.na(x))
xyz$x子集(xyz,x!=“”)x y z 1 A 100 2 B 200 3 C 300 4 D 400
xyz$x <- as.numeric(as.character(xyz$x))
subset(xyz, !is.na(x))