我需要迭代地将数据连接到 tibble(或数据帧),以便每次执行循环时 tibble 都会增长一列。
令 bin_list 为执行连接的标识符:
bin_list<-c(6,7,8,9,10,11,12,13)
并将以下三个小标题一次连接起来:
hour_1<-(tibble(bin_list=c(3,4,5,6,7,8,9,10,11,12,13), rain=c(0,0,.25,0,0,.25,0,0,0,0,.25)))
hour_2<-(tibble(bin_list=c(3,4,5,6,7,8,9,10,11,12,13), rain=c(0,0,.25,0,0,0,0,0,.25,0,.25)))
hour_3<-(tibble(bin_list=c(3,4,5,6,7,8,9,10,11,12,13), rain=c(0,0,.25,0,0,.25,0,0,.5,0,.25)))
最终,我正在尝试制作:
final<- tibble(bin_list=c(6,7,8,9,10,11,12,13), hour_1=c(0,0,.25,0,0,0,0,.25), hour_2=c(0,0,0,0,0,.25,0,.25), hour_3=c(0,0,.25,0,0,.5,0,.25))
一直在摆弄“for”、“left_join”和“assign”,但无法破解它。我知道有一种更有效的方法来连接这些时间(可能是嵌套左连接),但我正在处理中等大小的数据。
bin_list 约为 75,000 行,每个 hour_i 存储为 .txt 文件约 150 万行。我想要完成的是调用hour_1,left_join到bin_list,在env中分配它,调用hour 2,left_join到已经加入bin_list的hour_1,在env中分配它,调用hour 3....
对于 左连接 分配
关于:
library(purrr)
library(dplyr)
tibble_names <- paste0('hour_', 1:3)
main_bin_list <- 6:13
cbind(main_bin_list,
tibble_names |>
map(~ get(.x) |>
filter(bin_list %in% main_bin_list) |>
select(rain)
) |>
reduce(cbind) |>
setNames(nm = tibble_names)
)
输出:
main_bin_list hour_1 hour_2 hour_3
1 6 0.00 0.00 0.00
2 7 0.00 0.00 0.00
3 8 0.25 0.00 0.25
## ...