R переименовать соседний столбец - PullRequest
0 голосов
/ 29 ноября 2018

Когда в Excel есть объединенные ячейки, импорт данных дает общие имена столбцов для последующих столбцов, как показано на рисунке ниже.

R кадр данных из листа Excel со объединенными ячейками

Так можно ли скопировать название столбца в столбец справа от него?В этом примере было бы скопировать «Результаты диоксида серы», чтобы перезаписать X_6 и X_7, а «Результаты этанола» в X_8 и X_9 и т. Д.

Все интересующие имена столбцов заканчиваются на «Результаты», поэтому яучитывая, могу ли я выбрать столбцы на основе «Результатов» в имени и скопировать имя в 2 столбца справа.

Есть еще много столбцов, но они имеют тот же шаблон и количествостолбцов и их имен, вероятно, изменится, но «Результаты» все равно будут в именах.

1 Ответ

0 голосов
/ 29 ноября 2018

Это решение работает с использованием sapply против имен фрейма данных.Затем для каждого имени столбца он проверяет, заканчивается ли имя столбца, которое было на одну или две позиции ранее results.Если это так, то он копирует предыдущее имя с одной или двух предшествующих позиций.

df <- data.frame(one_results=c(1:3), blah=c(4:6), star=c(7:9), col=c(1:3))
df

names(df) <- sapply(seq_along(names(df)), function(x) {
    if (x > 1 && grepl("results$", names(df)[x-1])) {
        return(names(df)[x-1])
    }
    else if (x > 2 && grepl("results$", names(df)[x-2])) {
        return(names(df)[x-2])
    }
    else {
        return(names(df)[x])    # do not alter the column name in this case
    }
})

df

Вывод:

  one_results blah star col
1           1    4    7   1
2           2    5    8   2
3           3    6    9   3

  one_results one_results one_results col
1           1           4           7   1
2           2           5           8   2
3           3           6           9   3
...