Как добавить строку символов для каждой второй строки в R? - PullRequest
1 голос
/ 17 февраля 2020

Я хотел бы объединить одну строку в каждую вторую строку только для одного столбца:

Отсюда:

+------+------+
| col1 | col2 |
+------+------+
| A    |   11 |
| B    |   22 |
| A    |   22 |
| A    |   33 |
| A    |   44 |

+------+------+

К этому (добавление _a к первому столбцу):

+------+------+
| col1 | col2 |
+------+------+
| A    |   11 |
| B_a  |   22 |
| A    |   22 |
| A_a  |   33 |
| A    |   44 |
+------+------+

Спасибо за вашу помощь! Предпочтительно я хотел бы использовать paste0 () или что-нибудь в тидиверсе!

Ответы [ 3 ]

2 голосов
/ 17 февраля 2020

Использование векторной рециркуляции в базе R:

df$col1 <- paste0(df$col1, c("", "_a"))
df
  col1 col2
1    A   11
2  B_a   22
3    A   22
4  A_a   33
5    A   44

Воспроизводимый пример (укажите это в следующий раз):

df <- data.frame(
  col1 = c("A", "B", "A", "A", "A"),
  col2 = c(11, 22, 22, 33, 44),
  stringsAsFactors = FALSE
)
2 голосов
/ 17 февраля 2020

Вы можете попробовать:

df %>%
 mutate(col1 = if_else(row_number() %% 2 == 0, paste0(col1, "_A"), col1))

  col1 col2
1    A   11
2  B_A   22
3    A   22
4  A_A   33
5    A   44
1 голос
/ 17 февраля 2020

Мы можем использовать векторную переработку для подстановки альтернативных значений col1 и paste "a_".

df$col1[c(FALSE, TRUE)] <- paste0(df$col1[c(FALSE, TRUE)], "_a")
df
#  col1 col2
#1    A   11
#2  B_a   22
#3    A   22
#4  A_a   33
#5    A   44

Убедитесь, что col1 имеет классовый характер и не имеет значения.

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