簡體   English   中英

使用as.factor而不是plyr和ddply來對R中的變量進行分組?

[英]Using as.factor rather than plyr and ddply to group variables in R?

抱歉,這是一個經驗豐富的R用戶會知道的東西,但我剛剛遇到這個問題並想詢問正確的用法。

似乎可以使用as.factor對變量的范圍進行分類。 所以,我可以將觀察分組到一個范圍內。 例如,如果我正在查看用戶的訪問,則看起來我可以編寫if / then語句來按用戶訪問的范圍對用戶進行分區,然后根據組獲取摘要統計信息。

以下是我了解到這一點的鏈接: http//programming-r-pro-bro.blogspot.com/2011/10/modelling-with-r-part-2.html

現在,雖然這個函數看起來比使用plyrddply對數據進行分組更容易,但它看起來不夠強大,無法將變量分解為多個二進制數(例如十分之一的十進制數) - 你必須自己做。

這導致了我的問題 - 對於數據分組是一個比另一個好,還是有很多方法可以解決這樣的分組問題?

謝謝

我認為cut是一個更好的工具。

有一些樣本數據:

set.seed(123)
age <- round(runif(10,20,50))

這就是我要做的:

> cut(age, c(0,30,40,Inf))
 [1] (0,30]   (40,Inf] (30,40]  (40,Inf] (40,Inf] (0,30]   (30,40]  (40,Inf]
 [9] (30,40]  (30,40] 
Levels: (0,30] (30,40] (40,Inf]

(可選)手動設置因子標簽:

> cut(age, c(0,30,40,Inf), labels=c('0-30', '31-40', '40+'))
 [1] 0-30  40+   31-40 40+   40+   0-30  31-40 40+   31-40 31-40
Levels: 0-30 31-40 40+

相比之下,鏈接頁面表明:

> as.factor(ifelse(age<=30, '0-30', ifelse(age <= 40, '30-40', '40+')))
 [1] 0-30  40+   30-40 40+   40+   0-30  30-40 40+   30-40 30-40
Levels: 0-30 30-40 40+

暫無
暫無

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

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