df 中的绑定行

Binding Rows in df

将一些 df 绑定在一起时出现小问题。

我使用以下过程创建了简化的 dfs:

PWI_1 <- read.xlsx("/Users/myname/Desktop/PrelimPWI/PWI_1_V1A.xlsx", colNames = TRUE, startRow = 2)
Slim_1 <- data.frame(PWI_1$ExperimentName,PWI_1$Subject, PWI_1$error,PWI_1$Block, PWI_1$Category, PWI_1$Trial,PWI_1$prompt1.RT)

...以下文件等。

然后我使用这段代码尝试绑定 dfs:

merged <- bind_rows(list(Slim_1,Slim_10,Slim_11...))

但是,dfs 是连接到右边的,而不是在一个长格式 df 中附加在末尾。 *注意PWI_V1x是实验版本的名称,需要排队

我认为错误是由变量修剪过程(即创建 'slim' df)引起的,但不幸的是,未修剪的文件具有不同的列数,因此在尝试绑定原始文件时出现错误dfs。如有任何建议,我们将不胜感激!

bind_rows 要求列名相同。使用 dplyr::select 而不是 "slimming" 您的数据框,这样您每次都可以选择相同的列名。

    Slim_PWI_1 <- read.xlsx("/Users/myname/Desktop/PrelimPWI/PWI_1_V1A.xlsx", colNames = TRUE, startRow = 2) %>% 
    select(ExperimentName, Subject, error, Block, Category, Trial, prompt1.RT)

那么这应该有效:

merged <- bind_rows(Slim_PWI_1, ...)

编辑: 如果你有多个文件,你可以像这样一起阅读和瘦身:

    Slim_PWI_list <- dir(path = "/Users/myname/Desktop/PrelimPWI/", pattern = "PWI.*xlsx", full.names = TRUE) %>% 
map(~read.xlsx(., colNames = TRUE, startRow = 2)) %>% 
map(~select(., ExperimentName, Subject, error, Block, Category, Trial, prompt1.RT))
    merged <- bind_rows(Slim_PWI_list)