Как добавить строку в фрейм данных с каналом, используя tidyverse? - PullRequest
0 голосов
/ 15 марта 2020

Пример

Рассмотрим этот кадр данных

 abc
 efg
 hij

(ab c - столбец)

Я хочу преобразовать это в

 X
 abc
 efg
 hij

Где X теперь имя основного столбца, а ab c в значениях

Я пробовал это

 df %>% mutate(X = abc)

, это превращает его в

X
efg
hij

с ab c исчезающим

Ответы [ 2 ]

1 голос
/ 15 марта 2020

Если у вас несколько столбцов, вы можете сделать:

library(dplyr)

names(df) %>%
  t %>%
  as.data.frame() %>%
  setNames(names(df)) %>%
  bind_rows(df) %>%
  rename_all(~LETTERS[seq_len(ncol(df))])

#    A
#1 abc
#2 efg
#3 hij

Только для одного столбца это можно немного упростить.

names(df) %>%
  setNames(names(df)) %>%
  bind_rows(df) %>%
  rename(X = abc)

#  X    
# <chr>
#1 abc  
#2 efg  
#3 hij  
0 голосов
/ 15 марта 2020

Мы также можем использовать imap для добавления имен столбцов

library(dplyr)
library(purrr)
imap_dfr(df, ~ c(.y, .x)) %>% 
      rename_all(~ 'X')
# A tibble: 3 x 1
#  X    
#  <chr>
#1 abc  
#2 efg  
#3 hij  

data

df <- structure(list(abc = c("efg", "hij")), class = "data.frame", 
     row.names = c(NA, 
-2L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...