r - 从Excel文件中绑定多个dfs
问题描述
我目前正在将多个 excel 文件中的数据合并到一个 df 中。问题是,文件中的列数不同(由于不同的实验版本),所以我只需要绑定每个文件中的某些列/变量(它们具有相同的名称)。
我首先尝试“手动”执行此操作,使用:
library(openxlsx)
PWI <- read.xlsx("/Users/myname/Desktop/PrelimPWI/PWI_1_V1A.xlsx", colNames = TRUE, startRow = 2)
Slim_1 <- data.frame(PWI$Subject, PWI$Block, PWI$Category, PWI$Trial,PWI$prompt1.RT)
#read in and pull out variables of interest for one subject
mergedFullData = merge(mergedDataA, mergedDataB)
#add two together, then add the third to the merged file, add 4th to that merged file, etc
显然,似乎有一种更简单的方法来组合文件。我一直在努力使用:
library(openxlsx)
path <- "/Users/myname/Desktop/PrelimPWI"
merge_file_name <- "/Users/myname/Desktop/PrelimPWI/merge_file_name.xlsx"
filenames_list <- list.files(path= path, full.names=TRUE)
All <- lapply(filenames_list,function(merge_file_name$Subject){
print(paste("Merging",merge_file_name,sep = " "))
read.xlsx(merge_file_name, colNames=TRUE, startRow = 2)
})
PWI <- do.call(rbind.data.frame, All)
write.xlsx(PWI,merge_file_name)
但是,我不断收到列数不匹配的错误,但我不确定在哪里提取我需要的特定变量(早期代码中列出的变量)。我尝试过的任何其他调整都导致只有第一个文件被写入 xlsx,或者是一个完全空白的 df。任何帮助将不胜感激!
解决方案
library(tidyverse)
df1 <- tibble(
a = c(1,2,3),
x = c(4,5,6)
)
df2 <- tibble(
x = c(7,8,9),
y = c("d","e","f")
)
bind_rows(df1, df2)
from的bind
功能dplyr
应该可以帮助你。它们可以按行或列将数据框绑定在一起,并且可以灵活地处理不同的列名。
然后,您可以选择要保留的实际列。
推荐阅读
- python - 如何根据日期计算行的平均值
- angular - 拖放 svg 元素适用于 Angular 7,但不适用于 Angular 11
- wordpress - 在 wordpress 目录中禁用 https 重定向
- javascript - 在按钮之间添加管道分隔符?
- python - 如何使用 s3 在 dynamo db 中写入多个项目?
- python - Python:测试函数/方法签名是否已更改的正确方法
- logging - 使用 Sybase 和 Java 记录 SQL 和存储过程调用
- java - Java 扫描程序类跳过字符串输入
- api - 我无法使用 Flutter 发出发布请求(注册)
- apache-kafka - 发生错误时 RabbitTransactionManager 不会在 ChainedTransactionManager 处回滚