[英]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.