簡體   English   中英

從R中的數據幀子集空白行

[英]Subsetting blank rows from data frame in R

如果給定列中的行為空白或不適用,如何從數據框中對行進行子集設置。 例如:

    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列大於零的行?

創建數據框時,您指定x應該是因子變量。

(從技術上講,您指定它應該是字符,但是data.frame已將您的想法轉換為適合您的因素。再次,從技術上講,您沒有指定它應為字符,但是R已閱讀了您的想法,因為您試圖在一個向量中組合數字和字符,將其全部強制為字符模式的向量。)

因此,在這種情況下,“大於零”作為比較運算符沒有意義。 我將讀懂您的想法,並得出結論,您實際上希望x為數字,但要考慮到該值不可用的情況。 在這種情況下,您應該

xyz$x <- as.numeric(as.character(xyz$x))
subset(xyz, !is.na(x))

因為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),]可以解決問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM