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