R语言中如何基于数据框其他列的存在值生成指定新列
你可以使用R语言tidyverse套件中的pivot_longer函数完成宽表转长表的需求,完整实现方案如下:
前置依赖
先安装加载所需包:
# 未安装可先执行 install.packages("tidyverse") library(tidyverse) library(lubridate)
处理代码
result_df <- sample_df %>% # 宽表转长表:将所有月份列映射为time、sum两列 pivot_longer( cols = -project, names_to = "time", values_to = "sum" ) %>% # 过滤无金额的N/A记录 filter(sum != "N/A") %>% # 将金额转为数值格式 mutate(sum = as.numeric(sum)) %>% # 筛选2020年1月~2021年10月范围内的记录 mutate(month = ym(time)) %>% filter( month >= ymd("2020-01-01"), month <= ymd("2021-10-31") ) %>% # 保留需要的输出列 select(project, time, sum)
输出验证
执行后result_df的结构就和你期望的输出格式完全一致。
内容的提问来源于stack exchange,提问作者user000
相关产品推荐
相关产品推荐

