[英]Different results for 2 subset data methods in R
我正在對數據進行子集化,對於以下代碼,我得到了不同的結果:
subset(df, x==1)
df[df$x==1,]
x
的類型是integer
難道我做錯了什么? 先感謝您
沒有示例數據,很難說出問題所在。 但是,我的直覺是以下內容可能會解釋您的問題:
df <- data.frame(quantity=c(1:3, NA), item=c("Coffee", "Americano", "Espresso", "Decaf"))
df
quantity item
1 Coffee
2 Americano
3 Espresso
NA Decaf
讓我們用[
df[df$quantity == 2,]
quantity item
2 Americano
NA <NA>
現在讓我們使用subset
的子subset
:
subset(df, quantity == 2)
quantity item
2 Americano
我們看到子集輸出存在差異,具體取決於如何處理NA
值。 我認為是這樣的:使用subset
,您明確聲明要使用條件可驗證為真的子集。 df$quantity==2
生成一個真/假陳述向量,但是在缺少數量的情況下,不可能分配TRUE
或FALSE
。 這就是為什么我們得到以下輸出並以NA結尾的原因:
df$quantity==2
[1] FALSE TRUE FALSE NA
函數[
此向量,但不了解如何處理NA
,這就是為什么我們得到NA <NA>
而不是NA Decaf
原因。 如果您更喜歡使用[
,則可以使用以下代碼:
df[which(df$quantity == 2),]
quantity item
2 Americano
這將邏輯條件df$quantity == 2
轉換為向量或行號,其中邏輯條件“可驗證”地得到滿足。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.