r - 在选择要加入的列时加入多个 data.frame
问题描述
我有 10 个具有相同 data.frame 结构 [75 x 1259] 的 csv 文件。它们是使用列表导入到 R 中的。我想在每个 csv 文件中获取相同的列并创建一个新的 data.frame [75 X 11],所以最后我有 1259 个 75 X 11 的数据帧(11 列,因为第一列在每个data.frame 所以它可以用于“by=”参数)。
我曾经有一个可以为 3 data.frame 执行此操作的代码,这不是很复杂。
Tab<-function(k){
left_join(select(Ini1, c("value",k)), select(Aug2, c("value",k)), by="value") %>%
left_join(., select(Dim2, c("value",k)), by="value") }
for (k in 2:1258) {
write.csv(data.frame(Tab(k)), paste0('/Users/Tableau des features/',k,'.csv'), row.names = T)
如果我没有义务再做 7 个管道,我会很高兴。我阅读了此 同时在列表中合并多个 data.frames,以帮助我理解合并多个 data.frame。下面的代码听起来不错。
csv.list %>% reduce(left_join, by="value")
唯一的问题是我如何选择要合并的列。
解决方案
如果csv.list
是数据框列表并且该列value
存在于所有数据框中,那么您可以使用Reduce
如下函数:
library(tidyverse)
## select same column from every dataframe
new_csv_list <- lapply(csv.list, function(x) x %>% select(value, Image))
## Merge all the dataframe using the updated list
df <- Reduce(function(x,y) merge(x, y, by = 'value', all.x = TRUE), new_csv_list)
推荐阅读
- python - 使用 Pandas 将列从一个数据帧添加到另一个具有不同列名的数据帧
- google-bigquery - 将 ML Engine 直接用于存储在 Google BigQuery 表中的数据
- php - 在 VS Code 中服务 PHP 项目时遇到问题
- sql - 查找 ID 匹配但其他值不匹配的记录
- javascript - 在 Windows 上使用 Gulp 进行 E2E 测试编排:无法终止进程
- android - 无法从使用 count() 的 sqlite 查询中检索结果
- python - 如何创建具有权限的预定义组?
- docker - Windows:docker-compose 找不到指定的 Dockerfile
- python - 解析对 JSON 数据的 HTTP 响应
- android - 将 TextView 的文本与另一个 TextView 对齐