从R中的数据帧子集设置空白行

从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 != "",] #

如果给定列中的行为空或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 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))