r - R:如何在原始df中按单列分组n个数据框?
问题描述
我有一个具有“值”的数据框,然后是 Decile_Category_1、Decile_Category_2、...、Decile_Category_n。
我想将 n 个单独的 df 按它们的十分位数分组,然后想在每个数据透视表上制作一个图表。除了 n 次键入 group_by 之外,还有什么快速的方法?
编辑:示例开始 DF:
Value Dec_Cat_1 Dec_Cat_2 Dec_Cat_3
100 1 3 1
200 3 3 3
400 1 6 3
... ... ... ...
结束 DF1
Dec_Cat_1 Value
1 500
2 xxx
3 200
4 xxx
5 xxx
6 xxx
7 xxx
8 xxx
9 xxx
10 xxx
结束 DF2
Dec_Cat_2 Value
1 xxx
2 xxx
3 300
4 xxx
5 xxx
6 400
7 xxx
8 xxx
9 xxx
10 xxx
对于原始数据框中的每一列,依此类推。
解决方案
## Dataset
df = read.table(text="Value Dec_Cat_1 Dec_Cat_2 Dec_Cat_3
100 1 3 1
200 3 3 3
400 1 6 3", h=T)
如果您正在处理多个数据框,您可能希望将它们放在一个列表中。首先,将您的 n 列数据框分成包含 n-1 个数据框的列表:
l1 = lapply(df[-1],function(x) cbind(df[1],x))
$Dec_Cat_1
Value x
1 100 1
2 200 3
3 400 1
$Dec_Cat_2
Value x
1 100 3
2 200 3
3 400 6
$Dec_Cat_3
Value x
1 100 1
2 200 3
3 400 3
然后,使用 和 中的函数dplyr
,tidyr
您可以总结您的价值:
library(dplyr)
library(tidyr)
res = lapply(l1,function(d) d %>% group_by(x) %>% summarise(Value = sum(Value)) %>% complete(x = 1:10))
> res
$Dec_Cat_1
# A tibble: 10 x 2
x Value
<int> <int>
1 1 500
2 2 NA
3 3 200
4 4 NA
5 5 NA
6 6 NA
7 7 NA
8 8 NA
9 9 NA
10 10 NA
$Dec_Cat_2
# A tibble: 10 x 2
x Value
<int> <int>
1 1 NA
2 2 NA
3 3 300
4 4 NA
5 5 NA
6 6 400
7 7 NA
8 8 NA
9 9 NA
10 10 NA
$Dec_Cat_3
# A tibble: 10 x 2
x Value
<int> <int>
1 1 100
2 2 NA
3 3 600
4 4 NA
5 5 NA
6 6 NA
7 7 NA
8 8 NA
9 9 NA
10 10 NA
推荐阅读
- java - 从 R 调用 Java 的方法
- css - 为 css 样式化视频找到正确的路径
- amazon-web-services - 我在 AWS SageMaker 中训练模型时遇到问题,在需要保存模型之前一切都很好
- node.js - 检查用户是否在整个会话期间登录的最佳实践
- spring-security - Spring starter security-basic auth-vai zuul 服务器
- c - 需要解释输出
- django - 如何从 Django 中的 2 个查询集中获取公共对象?
- java - 通过 Kafka 发送/接收 Java 对象
- php - 我的身份验证尝试方法不起作用
- swagger-tools - 过期令牌可以返回 401 而不是 403?