在R语言中按条件计算并添加UV.rate新行的技术实现问题
问题解决:按分组添加失业率与职位空缺率比值的新行
原始数据结构
| DATE | Industry | Statistics | VALUE |
|---|---|---|---|
| 2022-01-01 | Agriculture(农业) | Employment(就业人数) | 500 |
| 2022-01-01 | Agriculture(农业) | Unemployment(失业人数) | 200 |
| 2022-01-01 | Agriculture(农业) | Vacancies(职位空缺数) | 100 |
| 2022-01-01 | Construction(建筑业) | Employment(就业人数) | 800 |
| 2022-01-01 | Construction(建筑业) | Unemployment(失业人数) | 400 |
| 2022-01-01 | Construction(建筑业) | Vacancies(职位空缺数) | 100 |
原代码问题
你的代码存在两个核心问题:
- 未按
DATE和Industry分组,summarise会对整个数据框计算,而非每个分组单独运算 - 代码末尾多了一个无效的
%>%,属于语法错误
可行解决方案
使用dplyr完成分组计算+合并操作,代码如下:
library(dplyr) # 按DATE和Industry分组,生成UV.rate对应行 uv_rate_rows <- df %>% group_by(DATE, Industry) %>% summarise( VALUE = VALUE[Statistics == "Unemployment"] / VALUE[Statistics == "Vacancies"], Statistics = "UV.rate", .groups = "drop" # 取消分组状态,避免后续合并异常 ) # 合并原始数据与新生成的UV.rate行 newdf <- bind_rows(df, uv_rate_rows)
结果说明
运行后newdf会在每个DATE+Industry分组下新增一行:
- Statistics列值为
UV.rate - VALUE列值为对应分组下失业人数除以职位空缺数的结果(农业组为2,建筑业组为4)
内容的提问来源于stack exchange,提问作者user15032839
相关产品推荐
相关产品推荐

