如何在 R 中使用 Table 函数创建自定义 headers?

How can you create custom headers using Table function in R?

我有一个每个团队的数据框,如下所示 nebraska。然而,这些糟糕的球队中有一些连一场胜利都没有,所以他们的 $Outcome 栏只有 L

> nebraska
           Teams     Away/Home   Score   Outcome
1     Arkansas State      Away    36 
2           Nebraska      Home    43        W
3           Nebraska      Away    35        L
4             Oregon      Home    42                          
5  Northern Illinois      Away    21                          
6           Nebraska      Home    17        L
7            Rutgers      Away    17                          
8           Nebraska      Home    27        W
9           Nebraska      Away    28        W
10          Illinois      Home     6                          
11         Wisconsin      Away    38                          
12          Nebraska      Home    17        L
13        Ohio State      Away    56                          
14          Nebraska      Home    14        L

当我 运行 table(nebraska$Outcome 它给了我预期的结果:

table(nebraska$Outcome)
  L W 
7 4 3 

然而,对于没有一场胜利(如 Baylor)或只有胜利的球队,它只会给我这样的信息:

table(baylor$Outcome)
  L
7 7 

我想为 table 函数指定自定义 headers,这样我就可以得到类似这样的输出:

table(baylor$Outcome)
  L W
7 7 0

我尝试将参数 dnn 传递给 table 函数调用,但它会抛出以下代码的错误:

> table(baylor$Outcome,dnn = c("W","L",""))

Error in names(dn) <- dnn : 'names' attribute [3] must be the same length as the vector [1]

谁能告诉我如何正确列出这些输赢?

试试这个:

with(rle(sort(nebraska$Outcome)),
     data.frame(W = max(0, lengths[values == "W"]),
                L = max(0, lengths[values == "L"])))
#  W L
#1 3 4

按照 tidy 工作流程,我提供...

library(dplyr)
library(tidyr)

df <- nebraska %>%
  group_by(Teams, Outcome) %>%
  summarise(n = n()) %>%
  spread(Outcome, n) %>%
  select(-c(`<NA>`))

# # A tibble: 8 x 3
# # Groups:   Teams [8]
#               Teams     L     W
# *             <chr> <int> <int>
# 1    Arkansas State    NA    NA
# 2          Illinois    NA    NA
# 3          Nebraska     4     3
# 4 Northern Illinois    NA    NA
# 5        Ohio State    NA    NA
# 6            Oregon    NA    NA
# 7           Rutgers    NA    NA
# 8         Wisconsin    NA    NA

...我忍不住用 knitr::kablekableExtra

来美化自己
library(knitr)
library(kableExtra)

df %>%
  kable("html") %>%
  kable_styling(bootstrap_options = c("striped", "hover"))

我认为这不必那么复杂。只需将 baylor$Outcome 设为 factor 然后 table。例如:

# example data
baylor <- data.frame(Outcome = c("L","L","L"))

那么就是:

baylor$Outcome <- factor(baylor$Outcome, levels=c("","L","W"))
table(baylor$Outcome)

#  L W 
#0 3 0