merge rows into groups
我有一个这样构造的数据框
1
2 3 4 5 6 7 |
age share
… 19 0.02 20 0.01 21 0.03 22 0.04 … |
我想将每个年龄组合并到更大的群组中,例如 <20, 20-24, 25-29, 30-34, >=35(并将份额相加)。
当然,这可以很容易地手动完成,但我很难相信没有专门的功能。但是,我无法找到此功能。你能帮帮我吗?
- 看看 ?cut 函数,它可以满足您的需求;)
- @Jilber 谢谢 – 我试过 cut 但我不知道如何处理分享栏……
- 在这种情况下你应该使用 cut2 ,我相信它在 hmisc 包中
- stackoverflow.com/questions/11963508/…——检查这个
你要使用的是?cut。例如:
1
2 3 4 5 6 7 8 9 10 11 12 13 |
> myData <- read.table(text=”age share
+ 19 0.02 + 20 0.01 + 21 0.03 + 22 0.04″, header=TRUE) > > myData$ageRange <- cut(myData$age, breaks=c(0, 20, 24, 29, 34, 35, 100)) > myData age share ageRange 1 19 0.02 (0,20] 2 20 0.01 (0,20] 3 21 0.03 (20,24] 4 22 0.04 (20,24] |
请注意,您需要包含低于底部编号和顶部编号的断点,以便正确形成这些间隔。进一步注意,断点恰好是(例如)20,而不是 <=20, >=21;也就是说,在 20 和 21 之间不能存在”间隙”,这样 20.5 就会被忽略。
从那里,如果您希望将归类在同一 ageRange 下的行中的 share 相加,您可以创建一个新的数据框:
1
2 3 4 5 |
> newData <- aggregate(share~ageRange, myData, sum)
> newData ageRange share 1 (0,20] 0.03 2 (20,24] 0.07 |
- 好的,这行得通。但是,实际的合并是如何完成的?这样第 1 行
来源:https://www.codenong.com/20223550/