我有一组数据按年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)
答案 0 :(得分:3)
使用cut
:
with(raw,table(Year,
cut(Score,breaks=seq(75,100,by=5),
right=TRUE,include.lowest=TRUE)))
(我想:你可能需要对right
和include.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