gpt4 book ai didi

r - 将相同数据帧的列表熔化到 R 中的一个数据帧

转载 作者:行者123 更新时间:2023-12-05 01:49:56 24 4
gpt4 key购买 nike

我有一个列表 waterlevels九个相同的数据帧,其中包含有关压力计 K01 至 K09 的信息。这些数据帧中的每一个都包含 96860 行,它们都有 13 个变量,除了一个有 21 个变量(其中的额外列并不重要)。

$K01
dateandtime seconds pressure_kPa temperature_.C baropressure_kpa barocompensation_kpa waterlevel_cm lengthcables_cm
1 2019-11-05 00:00:00 0 111.482 13.261 98.854 12.628 128.7697 490
2 2019-11-05 00:15:00 900 111.506 13.261 98.883 12.623 128.7188 490
3 2019-11-05 00:30:00 1800 111.511 13.261 98.872 12.639 128.8819 490
4 2019-11-05 00:45:00 2700 111.544 13.261 98.898 12.646 128.9533 490
5 2019-11-05 01:00:00 3600 111.536 13.313 98.913 12.623 128.7188 490

我想将这个列表融化成一个只包含一个变量的数据框barocompensation_kpa dateandtime使用以下代码的变量:

waterlevels_all <- melt(waterlevels, id.vars=c("dateandtime", "barocompensation_kpa"))

但是随后生成的数据框 waterlevels_all有 10364020 个观察值,而只有这个 df 应该只有 871740 行 (9*96860)。所以它必须有 3 个变量:dateandtime , barocompensation_kpaL1是相应数据框的名称(= 压力计的名称 - K01 到 K09)。

> head(waterlevels_all)
dateandtime barocompensation_kpa variable value L1
1 2019-11-05 00:00:00 17.55336 seconds 0 K01
2 2019-11-05 00:15:00 17.55489 seconds 900 K01
3 2019-11-05 00:30:00 17.55703 seconds 1800 K01
4 2019-11-05 00:45:00 17.55347 seconds 2700 K01
5 2019-11-05 01:00:00 17.55540 seconds 3600 K01
6 2019-11-05 01:15:00 17.56050 seconds 4500 K01

这怎么可能?如何获得正确的数据框?

最佳答案

以下是 tidyverse 的一些选项 - 使用 imap 遍历 list选择 感兴趣的列并使用列表元素名称 (.y)

创建新列“L1”
library(dplyr)
library(purrr)
imap_dfr(waterlevels, ~ .x %>%
select(dateandtime, barocompensation_kpa) %>%
mutate(L1 = .y))

或者使用 map,只需选择 列并使用 .id 创建新列(_dfr 返回通过 rbinding 列表元素的单个数据集)

map_dfr(waterlevels, ~ .x %>% 
select(dateandtime, barocompensation_kpa), .id = "L1")

关于r - 将相同数据帧的列表熔化到 R 中的一个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73651504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com