簡體   English   中英

R中2個子集數據方法的不同結果

[英]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生成一個真/假陳述向量,但是在缺少數量的情況下,不可能分配TRUEFALSE 這就是為什么我們得到以下輸出並以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.

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