Добавление нескольких столбцов на определенных позициях в кадре данных в R - PullRequest
0 голосов
/ 21 октября 2019

У меня есть фрейм данных, похожий на этот:

> df <- data.frame(A1=1:3, B1=1:3, A2=1:3, B2=1:3, A3=1:3, B3=1:3)
> df

  A1 B1 A2 B2 A3 B3
1  1  1  1  1  1  1
2  2  2  2  2  2  2
3  3  3  3  3  3  3

Теперь я ищу код, который добавляет строки перед B1, B2 и B3:

  A1 AB1 B1 A2 AB2 B2 A3 AB3 B3
1  1   X  1  1   X  1  1   X  1
2  2   X  2  2   X  2  2   X  2
3  3   X  3  3   X  3  3   X  3

Поскольку приведенный выше фрейм данных является лишь минимальным воспроизводимым примером (реальный фрейм данных гораздо больше), я ищу решение, использующее цикл for или решение с tidyverse. У меня была идея использовать комбинацию цикла for и add_column из пакета tibble:

library(tibble)

  for (i in 1:3) {
    df <- df %>%
      add_column(paste0("AB", i, "") = "X" , .before = paste0("B", i, ""))
  }

К сожалению, идея не работает. Я не совсем уверен, что весь подход неверен или что-то не так с paste0() и т. Д. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Заранее спасибо!

1 Ответ

2 голосов
/ 21 октября 2019

С небольшим изменением ваш код работает, хотя, вероятно, есть лучшие способы сделать это:

for (i in 1:3) {
  df <- df %>%
    add_column(!!paste0("AB", i, collapse = "") := "X" , .before = paste0("B", i, collapse =  ""))
}
...