我有一个包含三列的data.frame :令牌、出生年份和联系人数量。生日从1934年到2020年,我不想要单独的年份,而是像2000-2005,2006-2010等5年组,以后可视化每个年龄组的联系人数。
我已经找到了像this这样的cut函数
# set up cut-off values
breaks <- c(0,2,4,6,8,10,12,14,16,18,20)
# specify interval/bin labels
tags <- c("[0-2)","[2-4)", "[4-6)", "[6-8)", "[8-10)", "[10-12)","[12-14)", "[14-16)","[16-18)", "[18-20)")
# bucketing values into bins
group_tags <- cut(v$MeanEducation,
breaks=breaks,
include.lowest=TRUE,
right=FALSE,
labels=tags)然而,在本例中,我必须手动设置一个包含中断和标签的向量。
有没有自动化的解决方案?例如,第一个存储桶在下一年开始,比我的数据帧中的最小值要小5整除。最高端的模拟。
提前感谢!
发布于 2021-01-06 20:22:22
默认情况下,您定义的tags由cut函数创建,您不必手动添加它们。此外,您还可以使用seq创建中断序列,并使用paste以编程方式生成标签。
#Generate data
set.seed(123)
x <- sample(10)
x
#[1] 3 10 2 8 6 9 1 7 5 4
#Create breaks
breaks <- seq(0, 10, 2)
#Create labels
labels <- paste(head(breaks, -1), tail(breaks, -1), sep = '-')
#Without labels
cut(x, breaks)
#[1] (2,4] (8,10] (0,2] (6,8] (4,6] (8,10] (0,2] (6,8] (4,6] (2,4]
#Levels: (0,2] (2,4] (4,6] (6,8] (8,10]
#With labels
cut(x, breaks, labels)
#[1] 2-4 8-10 0-2 6-8 4-6 8-10 0-2 6-8 4-6 2-4
#Levels: 0-2 2-4 4-6 6-8 8-10https://stackoverflow.com/questions/65595599
复制相似问题