关于 r:merge rows into groups | 珊瑚贝

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/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9667.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?