Как я могу динамически комбинировать фреймы данных с разными именами столбцов в R? - PullRequest
1 голос
/ 21 апреля 2019

У меня есть скрипт аналитики, который обрабатывает пакеты данных с похожей структурой, но с разными именами столбцов. Мне нужно сохранить имена столбцов для последующих сценариев ETL, но мы хотим выполнить некоторую обработку, например:

results <- data.frame();
for (name in names(data[[1]])) {   
    # Start by combining each column into a single matrix
    working <- lapply(data, function(item)item[[name]]);
    working <- matrix(unlist(working), ncol = 50, byrow = TRUE);

    # Dump the data for the archive
    write.csv(working, file = paste(PATH, prefix, name, '.csv', sep = ''), row.names = FALSE);

    # Calculate the mean and SD for each year, bind to the results
    df <- data.frame(colMeans(working), colSds(working));
    names(df) <- c(paste(name, '.mean', sep = ''), paste(name, '.sd', sep = ''));

    # Combine the working df with the processing one
}

В соответствии с последним комментарием в примере, как я могу объединить фреймы данных? Я пробовал rbind и rbind.fill, но ни одна из них не работает, и они могут содержать от 10 до 100 разных имен столбцов в файлах данных.

1 Ответ

0 голосов
/ 22 апреля 2019

Это могло быть больше проблемой с поиском правильного ключевого слова, но метод cbind был фактически способом пойти вместе с матрицей,

# Allocate for the number of rows needed
results <- matrix(nrow = rows)

for (name in names(data[[1]])) {   
    # Data processing

    # Append the results to the working data
    results <- cbind(results, df)   
}

# Drop the first placeholder column created upon allocation
results <- results[, -1];

Очевидно, что выгода заключается в том, что столбцы должны иметь одинаковое количество строк, но в противном случае это просто вопрос добавления столбцов в матрицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...