R 从原始数据创建数据组并进行打印?

R 从原始数据创建数据组并进行打印?,r,R,我试图用我的原始数据为我的“年龄”变量创建分组数据。参与者的年龄范围为12-66岁,但我将参与者分为以下几组: 12-20 21-28 29-37 38-46 47-55 55-66 也是在我尝试使用这个新的分组数据并将其实现为直方图之后。谢谢我们可以使用cut创建基于中断的组,使用表格获取计数,并在基本R中使用条形图进行绘图 grp <- cut(age, breaks = c(-Inf, 12, 21, 29, 38, 47, 55, 66, Inf)) barplot(table

我试图用我的原始数据为我的“年龄”变量创建分组数据。参与者的年龄范围为12-66岁,但我将参与者分为以下几组:

  • 12-20
  • 21-28
  • 29-37
  • 38-46
  • 47-55
  • 55-66

也是在我尝试使用这个新的分组数据并将其实现为直方图之后。谢谢

我们可以使用
cut
创建基于
中断的组
,使用
表格
获取计数,并在
基本R
中使用
条形图
进行绘图

grp <- cut(age, breaks = c(-Inf, 12, 21, 29, 38, 47, 55, 66, Inf))
barplot(table(grp))

grp我们可以使用
cut
创建基于
中断的组,使用
表格
获取计数,并使用
基本R
中的
条形图
进行绘图

grp <- cut(age, breaks = c(-Inf, 12, 21, 29, 38, 47, 55, 66, Inf))
barplot(table(grp))

grp我认为您需要的是条形图,而不是直方图。
在akrun的帮助下,这里是另一个可能的解决方案。感谢akrun的澄清(见评论):

库(dplyr)
图书馆(GG2)
#10至80岁之间1000个年龄段的随机数据
种子(24)
df=12&age=21&age=29&age=38&age=47&age=56&age%
计数(年龄组)
#绘制条形图
ggplot(数据=df1,aes(x=年龄组,y=n))+
几何图形栏(stat=“identity”)

我认为您需要的是条形图,而不是直方图。 在akrun的帮助下,这里是另一个可能的解决方案。感谢akrun的澄清(见评论):

库(dplyr)
图书馆(GG2)
#10至80岁之间1000个年龄段的随机数据
种子(24)
df=12&age=21&age=29&age=38&age=47&age=56&age%
计数(年龄组)
#绘制条形图
ggplot(数据=df1,aes(x=年龄组,y=n))+
几何图形栏(stat=“identity”)

@TarJae默认情况下,这只是
cut
格式。您可以使用
labels=c(((12,20)”,…,“(38,47)”,…)对其进行自定义
@TarJae您可以检查
cut的源代码。默认值
paste0(如果(右)”(“其他”[”,ch.br[-nb],“,”,ch.br[-1L],如果(右)”)
谢谢你,akrun。我本想以同样的方式向用户15344033建议一个类似的答案,但由于出现了中断,我停止了。如果你看一下中断,每个栏都包含了之前栏的最后一个数字:例如,栏2包含21个,栏3包含21个。也许我错了,或者我忽略了什么。无论如何,谢谢你。每次都很完美!!@TarJae原因是在
cut
中,还有其他参数
include.lowest=FALSE,right=TRUE
。您可能需要更改它。我只是显示了一个选项来对它进行分组。OP可以在
cut
中进行更改,使其成为自定义
labels=FALSE
@TarJae这正是
cut
的方式默认情况下使用mats。您可以使用
标签=c(((12,20)”,…,“(38,47)”,…)进行自定义。
@TarJae您可以检查
剪切的源代码。默认情况下
粘贴0(if(right)”(“else”[”,ch.br[-nb],“,”,ch.br[-1L],if(right)”)
谢谢你,akrun。我本想以同样的方式向用户15344033建议一个类似的答案,但由于出现了中断,我停止了。如果你看一下中断,每个栏都包含了之前栏的最后一个数字:例如,栏2包含21个,栏3包含21个。也许我错了,或者我忽略了什么。无论如何,谢谢你。每次都很完美!!@TarJae原因是在
cut
中,还有其他参数
include.lowest=FALSE,right=TRUE
。您可能需要更改它。我只是显示了一个对它进行分组的选项。OP可以在
cut
中进行更改,使其成为customtry
labels=FALSE
library(dplyr)
library(ggplot2)
# random data of 1000 ages between 10 and 80 years
set.seed(24)
df <- data.frame(age = sample(10:80, 1000, replace = TRUE))

# dataframe with categorization of age in the suggested intervals. I think the last 55 is a typo.
df1 <- df %>% 
  mutate(agegroup = case_when(age >= 12  & age <= 20 ~ '12-20',
                              age >= 21  & age <= 28 ~ '21-28',
                              age >= 29  & age <= 37 ~ '29-37',
                              age >= 38  & age <= 46 ~ '38-46',
                              age >= 47  & age <= 55 ~ '47-55',
                              age >= 56  & age <= 66 ~ '56-66',
  )
  ) %>% 
  count(agegroup)

# plot the bars
ggplot(data=df1, aes(x=agegroup, y=n)) +
  geom_bar(stat="identity")