如何从R语言数据框列表生成两个指定结构的DataFrame?
解决方案
1. 提取生产统计数据(Dzienna.prod + Data)
每个列表项里,第二行的V1值就是Dzienna.prod,日期从第一个时间记录(第四行V1)中提取前10位的日期部分。用lapply遍历列表逐个提取字段,再通过do.call(rbind, ...)合并成最终数据框:
# 遍历列表提取生产值和日期 prod_data_list <- lapply(L1, function(df) { dzienna_val <- as.numeric(df$V1[2]) date_val <- substr(df$V1[4], 1, 10) data.frame(Dzienna.prod = dzienna_val, Data = date_val) }) # 合并为单个数据框 prod_df <- do.call(rbind, prod_data_list) prod_df
运行输出:
Dzienna.prod Data 1 4.12 2022-01-01 2 5.17 2022-02-01
2. 提取时序功率数据(Czas + Moc)
每个列表项里,从第四行开始的记录是时间和功率数据,先提取这部分行并重命名列,再合并所有列表项的结果:
# 遍历列表提取时序功率数据 moc_data_list <- lapply(L1, function(df) { moc_df <- df[4:nrow(df), ] colnames(moc_df) <- c("Czas", "Moc") moc_df$Moc <- as.numeric(moc_df$Moc) moc_df }) # 合并为单个数据框 moc_df <- do.call(rbind, moc_data_list) moc_df
运行输出:
Czas Moc 1 2022-01-01 00:00:00 0.13 2 2022-01-01 01:00:00 1.15 3 2022-02-01 00:00:00 0.18 4 2022-02-01 01:00:00 2.05
补充说明
- 原始数据框的
V1和V2为字符型,需手动将数值字段转为数值类型,避免后续计算异常。 - 日期提取除了
substr,也可通过format(as.Date(df$V1[4]), "%Y-%m-%d")实现,结果一致。
内容的提问来源于stack exchange,提问作者GrBa
相关产品推荐
相关产品推荐

