如何在R语言中调整数据集错位昼夜行以适配lag1操作
昼夜时序数据集行顺序调整方案
不用写循环,用分组排序的方法更高效,适合大型数据集,以下是两种常用工具的实现:
R(dplyr)
利用arrange()先按小时升序,同一小时内让Night排在Day前面:
library(dplyr) # 假设你的数据集名为df df_cleaned <- df %>% arrange(Hour, desc(Light))
原理:Night的首字母ASCII码大于Day,对Light降序排序会自动把Night放在同一小时的前面。
Python(Pandas)
先自定义Light的优先级,再按规则排序:
import pandas as pd # 假设你的数据集名为df # 定义Light的排序顺序:Night在前,Day在后 light_priority = pd.CategoricalDtype(categories=['Night', 'Day'], ordered=True) df['Light'] = df['Light'].astype(light_priority) # 按Hour升序、Light优先级排序 df_cleaned = df.sort_values(by=['Hour', 'Light'], ascending=[True, True])
两种方法都能快速完成整数据集的顺序调整,避免循环带来的性能损耗,调整后就能正常执行lag1操作。
内容的提问来源于stack exchange,提问作者fishlakeslimno
相关产品推荐
相关产品推荐

