r - 在 R 中为频率表创建间隔
问题描述
我有一个我在表单中创建的数据框
FREQ CNT
0 5
1 20
2 1000
3 3
4 3
I want to further group my results to be in the following form:
CUT CNT
0+1 25
2+3 1003
4+5 ...
.....
我已经尝试在 dplyr 中使用 between 和 cut 函数,但它只是在我的数据框中添加了一个新的间隔列,谁能给我一个很好的指示,告诉我去哪里实现这个目标?
解决方案
使用...的非优雅解决方案dplyr
可能是一种更好的方法。
dat <- data.frame(FREQ = c(0,1,2,3,4), CNT = c(5,20,1000, 3, 3))
dat2 <- dat %>%
mutate(index = 0:(nrow(dat)-1)%/%2) %>%
group_by(index)
dat2 %>%
summarise(new_CNT = sum(CNT)) %>%
left_join(dat2 %>%
mutate(CUT = paste0(FREQ[1], "+", FREQ[2])) %>%
distinct(index, CUT),
by = "index") %>%
select(-index)
# A tibble: 3 x 2
new_CNT CUT
<dbl> <chr>
1 25 0+1
2 1003 2+3
3 3 4+NA
推荐阅读
- javascript - 打字稿编译器类型赋值错误被忽略
- netbeans - Windows 7 BSOD 后无法从 netbeans 启动 weblogic
- jprofiler - jprofiler。如何在linux上导出结果
- json - SoapUI REST + JSON 模拟服务:如何在响应中从请求中返回数据?
- angular - SVG 不会在 pdf 文件中呈现(使用 pdfmake 和 html2canvas)
- string - SAS - 在字符串上放置空格
- c# - MVC 处理任何请求的 401 响应
- c# - 从引用为 .dll 文件的库中加载图像
- javascript - 我只使用 JavaScript 创建了一个包含一些记录的表,我想将我的数组与对象设置为本地存储
- kubernetes - istio 的细粒度授权解决方案