如何在R语言中合并两行数值生成新行添加至结果表
解决R语言中为比例表格新增合并行的问题
我有一段R语言代码,可生成标记为h12a至h12h的不同问题中,响应为1、2、3或4的占比。现在需要在表格中添加一行,显示响应为1或2的占比(即把第1行和第2行的数值相加作为新增行)。
现有表格:
| x | h12a |
|---|---|
| 1 | 0.5 |
| 2 | 0.1 |
| 3 | 0.1 |
| 4 | 0.3 |
目标表格:
| x | h12a |
|---|---|
| 1 | 0.5 |
| 2 | 0.1 |
| 3 | 0.1 |
| 4 | 0.3 |
| 1_2 | 0.6 |
原代码如下:
H12<-tibble(x=seq(1:4)) for (i in c(1:8)){ A=df.e%>%filter(ep==1)%>% select(paste0('h12',letters[i]))%>%filter(!is.na(.))%>% mutate_if(is.character,as.numeric)%>% table()%>%prop.table()%>%as.tibble()%>% mutate_if(is.character,as.numeric)%>% setNames(c('x',paste0('h12',letters[i]))) H12=left_join(H12,A) }
解决方案
在原代码生成H12表格后,添加以下代码即可生成包含合并行的目标表格:
# 计算1和2的占比之和,生成新增行 sum_row <- H12 %>% filter(x %in% c(1, 2)) %>% # 筛选出x为1和2的行 summarise(across(-x, sum), # 对所有h12开头的列求和 x = "1_2") # 标记新增行的x值为1_2 # 将新增行绑定到原表格末尾 H12 <- bind_rows(H12, sum_row)
代码说明
filter(x %in% c(1,2)):精准筛选出响应为1和2的两行数据;summarise(across(-x, sum)):使用across函数对除x列外的所有列(即h12a到h12h)进行求和计算;bind_rows(H12, sum_row):把计算好的合并行追加到原表格的最后一行。
内容的提问来源于stack exchange,提问作者Ali Inayat
相关产品推荐
相关产品推荐

