在表格中创建箱子

时间:2018-01-29 23:15:29

标签: r bins

我有一组数据按年getModel()显示测试分数(raw$Score)

我想创建一个表格,我将这些年份视为行中的行数和分数,并将分数按5的增量分组。

当我运行(raw$Year)时,我得到以下内容。我如何修改table(raw$Year,raw$Score)以便将计数分组为75-80,81-85,86-90,91,-95和96-100?

table(raw$Year,raw$Score)

2 个答案:

答案 0 :(得分:3)

使用cut

with(raw,table(Year,
   cut(Score,breaks=seq(75,100,by=5),
       right=TRUE,include.lowest=TRUE)))

(我想:你可能需要对rightinclude.lowest大惊小怪)

PS with()并非真的有必要,它只是让我们不要在代码中重复raw$两次......

答案 1 :(得分:1)

我希望以下内容可以帮助您走上正确的轨道!

我首先创建了一个示例数据框,希望与您当前使用的数据框匹配!查看How to make a great R reproducible example?以获取有关如何在将来撰写真正好问题的一些指导!


library(dplyr)

# create an example data frame
set.seed(123)
raw <- data.frame(Year = rep(2006:2017,10), 
                  Score= rep(rnorm(12, mean = 80, sd = 10), 10))
head(raw)
#>   Year    Score
#> 1 2006 74.39524
#> 2 2007 77.69823
#> 3 2008 95.58708
#> 4 2009 80.70508
#> 5 2010 81.29288
#> 6 2011 97.15065

# create a new "group" column and assign each row into a group based on score
raw <- raw %>%
  mutate(group = if_else(Score < 75, "<75",
                         if_else(Score >= 75 & Score < 80, "75-80",
                         if_else(Score >= 80 & Score < 85, "80-85",
                         if_else(Score >= 85 & Score < 90, "85-90",
                         if_else(Score >= 90 & Score < 95, "90-95",
                         if_else(Score >= 95 & Score <= 100, "95-100", "error")))))))

head(raw)
#>   Year    Score  group
#> 1 2006 74.39524    <75
#> 2 2007 77.69823  75-80
#> 3 2008 95.58708 95-100
#> 4 2009 80.70508  80-85
#> 5 2010 81.29288  80-85
#> 6 2011 97.15065 95-100

# summarise counts by year
raw %>%
  group_by(group) %>%
  summarise(n = n())
#> # A tibble: 5 x 2
#>    group     n
#>    <chr> <int>
#> 1    <75    30
#> 2  75-80    20
#> 3  80-85    40
#> 4  90-95    10
#> 5 95-100    20