如何使用列表指定排序顺序?

Wil*_*unn 5 sorting r

请原谅我的无知,但我在排序数据框时遇到了麻烦.我想指定一个有序列表,比如c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")排序时,数据帧按列表的顺序排序.

在这个例子中,我想从头开始

    Day Present Count
    Fri No  164
    Fri Yes 131
    Mon No  142
    Mon Yes 174
    Sat No  39
    Sat Yes 26
    Sun No  44
    Sun Yes 39
    Thu No  191
    Thu Yes 192
    Tue No  184
    Tue Yes 214
    Wed No  343
    Wed Yes 255
Run Code Online (Sandbox Code Playgroud)

结束

    Day Present Count
    Mon No  142
    Mon Yes 174
    Tue No  184
    Tue Yes 214
    Wed No  343
    Wed Yes 255
    Thu No  191
    Thu Yes 192
    Fri No  164
    Fri Yes 131
    Sat No  39
    Sat Yes 26
    Sun No  44
    Sun Yes 39
Run Code Online (Sandbox Code Playgroud)

我试过perday[do.call(order, perday[c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")]),]但是我选择了"未定义的列".如果字符向量中也有14个条目,我会得到同样的错误,所以我真的很困惑.

这是输入:

perday<-structure(list(dayofweek = c("Fri", "Fri", "Mon", "Mon", "Sat", 
"Sat", "Sun", "Sun", "Thu", "Thu", "Tue", "Tue", "Wed", "Wed"
), Attended = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 
2L, 1L, 2L, 1L, 2L), .Label = c("No", "Yes"), class = "factor"), 
    nrow = c(164L, 131L, 142L, 174L, 39L, 26L, 44L, 39L, 191L, 
    192L, 184L, 214L, 343L, 255L)), .Names = c("dayofweek", "Attended", 
"nrow"), row.names = c(NA, -14L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

Bri*_*ggs 8

你可以用"内联"来做

perday[order(factor(perday$dayofweek,levels=c(c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")))),]
Run Code Online (Sandbox Code Playgroud)

这使

   dayofweek Attended nrow
3        Mon       No  142
4        Mon      Yes  174
11       Tue       No  184
12       Tue      Yes  214
13       Wed       No  343
14       Wed      Yes  255
9        Thu       No  191
10       Thu      Yes  192
1        Fri       No  164
2        Fri      Yes  131
5        Sat       No   39
6        Sat      Yes   26
7        Sun       No   44
8        Sun      Yes   39
Run Code Online (Sandbox Code Playgroud)

  • 啊,必须让它们成为因素,然后指定水平.现在我已经开始在我的导入中设置stringsAsFactors = FALSE了,我真的开始了解是什么因素! (2认同)