Я работал над циклом for, который будет автоматически извлекать данные из таблиц Excel (каждый файл Excel является одним наблюдением) и обобщать их в больший кадр данных.В конце концов я хотел бы создать фрейм данных, где каждая строка содержит сводные данные каждого журнала.Я написал код для точного суммирования файлов Excel, но столкнулся с проблемой при объединении строк, потому что фреймы сводных данных не содержат все одинаковые столбцы, поэтому я не могу использовать rbind.Ниже приведен пример формата, который я использовал для своих обобщенных листов Excel:
final <- data.frame("BCE_2_Dur" = c(92013), "BCE_2_Freq" = c(1), "BCD_1_Dur" = c(228804), "BCD_1_Freq"= c(7), "BSL_3_Dur" = c(100191), "BSL_3_Freq" = c(3))
Где каждое резюме Excel может иметь разные коды (поведения, которые мы видели у животных) вверху, которые соответствуют существующимполная этограмма, но не обязательно будет включать в себя поведение всей этограммы (если они не видны).
Поскольку это в цикле for, я пытался решить проблему, просто создав пустые данныефрейм, который выглядит следующим образом:
empty <- data.frame("BCE_1_Dur" = c(0), "BCE_1_Freq" = c(0), "BCE_2_Dur" = c(0), "BCE_2_Freq" = c(0), "BCE_3_Dur" = c(0), "BCE_3_Freq" = c(0), "BCD_1_Dur" = c(0), "BCD_1_Freq"= c(0),"BCD_2_Dur" = c(0), "BCD_2_Freq"= c(0),"BCD_3_Dur" = c(0), "BCD_3_Freq"= c(0),"BSL_1_Dur" = c(0), "BSL_1_Freq" = c(0),"BSL_2_Dur" = c(0), "BSL_2_Freq" = c(0),"BSL_3_Dur" = c(0), "BSL_3_Freq" = c(0))
И затем пытаюсь связать их вместе, используя left_join, так как я хочу сохранить все столбцы пустыми, но заполнить столбцами, которые в конечном итоге совпадают.Чтобы предоставить значения для аргумента «by» в left_join, я создаю список (опять же, это должно работать в цикле for, чтобы список менялся при каждом прохождении цикла) по именам столбцов final:
namesfinal<-names(final)
namesfinal<-paste("'",as.character(namesfinal),"'",collapse=", ",sep="")
namesfinal<-paste("c","(",namesfinal,")",sep="")
Затем я запускаю список в код left_join:
Sum_Final <- left_join(x = empty, y = final, by = namesfinal)
Это выдает ошибку: Ошибка: by
не может содержать столбец соединения c('BCE_2_Dur', 'BCE_2_Freq', 'BCD_1_Dur', 'BCD_1_Freq', 'BSL_3_Dur', 'BSL_3_Freq')
, который отсутствует в LHS
Мое намерение состояло в том, чтобы затем rbind () Sum_Final к себе в конце цикла.однако, я не могу пройти мимо ошибки.Я попытался найти его и запустить разные версии имен через код (например, 'BCE_2_Dur' = 'BCE_2_Dur'), но получил те же ошибки.У кого-нибудь есть исправление и / или другое решение, которое может работать в цикле for?