You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 13:30:43