R如何根据上一行同State、Market、Date列值删除重复Cost列值
R语言实现代码
使用dplyr包的lag()函数即可实现需求,代码如下:
# 加载dplyr包 library(dplyr) # 1. 先对原始数据按分组维度排序,保证同组行连续 df_sorted <- df_raw %>% arrange(State, Market, Date) # 2. 比对当前行与上一行的指定列,相同则清空Cost df_result <- df_sorted %>% mutate(Cost = ifelse( State == lag(State, default = "") & Market == lag(Market, default = "") & Date == lag(Date, default = "") & Cost == lag(Cost, default = 0), NA, # 若要置为空字符串,替换为""即可 Cost ))
注意事项
- 必须先执行排序步骤,保证State、Market、Date相同的行连续排列,否则比对逻辑会出错
- 若Cost列为数值类型,建议保留NA值避免列类型被强制转为字符型,输出展示时可单独将NA显示为空
内容的提问来源于stack exchange,提问作者Jordan Strickland
相关产品推荐
相关产品推荐

