У меня есть фрейм данных с двумя столбцами (V1 и V2), и я хотел бы создать еще один столбец, который является вектором - с помощью функции объединения: c () - принимая в качестве аргументов другие столбцы.
Я использую dplyr для всех задач, поэтому я хотел бы использовать его также в этом контексте.
Я попытался создать новый столбец с функцией apply, но он возвращает вектор со всеми строками(не по строкам), что меня удивляет, потому что с другими функциями это работает по строкам.
Я решил это с помощью функции по строкам, но, поскольку она обычно не так эффективна, я хотел бы посмотреть, есть лидругой вариант.
Вот определение фрейма данных:
IDs <- structure(list(V1 = c("1", "1", "6"),
V2 = c("6", "8", "8")),
class = "data.frame",
row.names = c(NA, -3L)
)
Вот создание столбцов (вместе 1 - неправильный результат, а вместе 2 - хороший):
IDs <-
IDs %>%
mutate(together1 = list(mapply(function (x,y) c(x,y), V1, V2))
) %>%
rowwise() %>%
mutate(together2 = list(mapply(function (x,y) c(x,y), V1, V2))
) %>%
ungroup()
Вот результаты печати:
print(as.data.frame(IDs))
V1 V2 together1 together2
1 1 6 1, 6, 1, 8, 6, 8 1, 6
2 1 8 1, 6, 1, 8, 6, 8 1, 8
3 6 8 1, 6, 1, 8, 6, 8 6, 8
Заранее спасибо!