首页 > 解决方案 > 在 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 函数,但它只是在我的数据框中添加了一个新的间隔列,谁能给我一个很好的指示,告诉我去哪里实现这个目标?

标签: rdplyr

解决方案


使用...的非优雅解决方案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

推荐阅读