gpt4 book ai didi

r - 使用每个小标题中的名称从小标题列表中选择变量

转载 作者:行者123 更新时间:2023-12-03 23:53:38 24 4
gpt4 key购买 nike

我有一个小标题或数据框列表(每个列表中都有一个名称),我想:(1)创建具有相同名称的新列 long.col在每个小标题中来自具有不同名称的变量; (2) 通过从另一个 tibble 与每个 tibble 中连接 tibble 名称和列名称的键进行匹配,最后; (3) 为所有新创建的同名列绑定(bind)行long.col在每个 tibble 中,以及识别它们来自的原始 tibble。

我想最好使用 tidyverse 函数来做到这一点。以下是两者的示例: a) 小标题列表; b) 标识 tibble 名称和要在每个中选择的变量的关键 tibble

df1 <- tibble(v1 = c(rep("A", 5), rep("B", 5)),
v2 = 1:10)
df2 <- tibble(v1 = c(rep("C", 6), rep("D", 6)),
v3 = 11:22)
df3 <- tibble(v1 = c(rep("E", 4), rep("F", 4)),
v4 = 23:30)

list.df <- list(df1, df2, df3)
names(list.df) <- c("data1", "data2", "data3")

key <- tibble(data = c("data1", "data2", "data3"),
vars = c("v2", "v3", "v4"))

最终输出应如下所示:
 final.df <- tibble(data = c(rep("data1", 10), rep("data2", 12), rep("data3", 8)),
long.col = 1:30)

我需要使用多个列在更长的列表中执行此操作,因此为每个 tibble 中的每一列单独执行此操作是不可行的。

最佳答案

您可以使用 map2这里

library(purrr)
library(tibble)
out <- map2_df(.x = list.df,
.y = names(list.df),
.f = ~ {
temp <- key[["vars"]][key[['data']] == .y]
tibble(data = .y, long.col = .x[[temp]])
})

检查输出
identical(final.df, out)
#[1] TRUE

关于r - 使用每个小标题中的名称从小标题列表中选择变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53464733/

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