如何在 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::kable
和 kableExtra
来美化自己
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
我有一个每个团队的数据框,如下所示 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::kable
和 kableExtra
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