Объединить информацию из двух столбцов и расширить фрейм данных в R

#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="_" , поэтому вам не нужно его указывать