簡體   English   中英

使用`transform`函數對分類變量中的值進行排序

[英]order values in categorical variable using `transform` function

我有一個像這樣的測試數據集:

table(spamday)  
FR MO SA SU TH TU WE  
30 96  9  9 45 60 51

結構:

str(spamday)  
'data.frame':   300 obs. of  1 variable:
$ SPAMreceived: Factor w/ 7 levels "FR","MO","SA",..: 2 5 5 5 6 2 6 2 2 6 ...  

我的目標是使用transform函數使分類變量成為有序因子,並使用levels指令強加的順序

所以我運行以下代碼:

spamday <- transform(spamday, SPAMreceived <- factor(SPAMreceived, levels = c("MO", "TU", "WE", "TH", "FR", "SA", "SU"), ordered = TRUE))

你猜怎么着? 沒有任何反應......當使用table時仍然相同:

table(spamday)  
FR MO SA SU TH TU WE  
30 96  9  9 45 60 51

我很困惑......我做錯了什么?

這是一個有點硬,有時跟蹤時使用<-使用它,但是這是在你不想使用它的情況。 換句話說,只需將代碼更改為以下內容即可:

spamday <- transform(spamday, SPAMreceived = factor(SPAMreceived, 
    levels = c("MO", "TU", "WE", "TH", "FR", "SA", "SU"), ordered = TRUE)) 

這是一個小例子:

set.seed(1)
spamday <- data.frame(SPAMreceived = sample(c("FR", "MO", "SA", "SU", "TH", "TU", "WE"),
                                            50, replace = TRUE))
table(spamday$SPAMreceived)
# 
# FR MO SA SU TH TU WE 
#  5  7  7  6  9 10  6

temp <- transform(spamday, SPAMreceived = factor(SPAMreceived, 
    levels = c("MO", "TU", "WE", "TH", "FR", "SA", "SU"), ordered = TRUE))
table(temp$SPAMreceived)
# 
# MO TU WE TH FR SA SU 
#  7 10  6  9  5  7  6 

或者,您甚至不需要創建有序因子列。 只是在最后階段排序你的表:)

table(spamday$SPAMreceived)[c("MO", "TU", "WE", "TH", "FR", "SA", "SU")]
# 
# MO TU WE TH FR SA SU 
#  7 10  6  9  5  7  6

暫無
暫無

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

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