#r
#r
Вопрос:
у меня есть фрейм данных, подобный этому:
n s b
1 2 aa TRUE
2 3 bb FALSE
3 5 cc TRUE
Как мне расширить фрейм данных до чего-то подобного, объединив часть информации.
n tags
1 2_s aa
2 3_s bb
3 5_s cc
4 2_b TRUE
5 3_b FALSE
6 5_b TRUE
.
.
.
Посмотрите, как столбец n теперь представляет собой комбинацию его исходного имени и имени столбца, а теги являются их исходными значениями.
Комментарии:
1. Вы хотите преобразовать данные из широкого формата в длинный. Проверьте это cookbook-r.com/Manipulating_data /…
Ответ №1:
Мы gather
переводим столбцы ‘s’, ‘b’ в формат ‘long’, а затем выполняем unite
library(tidyverse)
gather(df1, key, tags, s:b) %>%
unite(n, n, key)
# n tags
#1 2_s aa
#2 3_s bb
#3 5_s cc
#4 2_b TRUE
#5 3_b FALSE
#6 5_b TRUE
данные
df1 <- structure(list(n = c(2L, 3L, 5L), s = c("aa", "bb", "cc"), b = c(TRUE,
FALSE, TRUE)), class = "data.frame", row.names = c("1", "2",
"3"))
Комментарии:
1. @user7729135
unite
объединяет столбцы, указанные ‘n’ и ‘key’, в новый столбец (‘n’). По умолчанию используетсяsep="_"
, поэтому вам не нужно его указывать