如何按因子水平复制日期列表并生成含因子列的数据框
解决方案
方法1:用tidyverse的dplyr实现
先提取df$Lieu的所有因子水平,再和你的日期数据框做全交叉连接,就能得到每个日期对应所有地点的组合:
# 先加载dplyr(没装的话先运行install.packages("dplyr")) library(dplyr) # 把Lieu的因子水平转成单独的数据框 lieu_list <- data.frame(Lieu = levels(df$Lieu)) # 生成日期+地点的全组合数据框 final_df <- cross_join(lst_dates, lieu_list)
方法2:用Base R实现
不用额外装包,直接用expand.grid生成全组合:
# 生成包含所有日期和地点组合的数据框 final_df <- expand.grid( Date_nuit = lst_dates$Date_nuit, Lieu = levels(df$Lieu), stringsAsFactors = FALSE # 可选,按需决定是否保留因子类型 )
两种方法都能得到你要的结果:每个日期会重复37次,分别对应df$Lieu的每一个因子水平,同时新增Lieu列存储地点名称。
内容的提问来源于stack exchange,提问作者Couis
相关产品推荐
相关产品推荐

