Сводные текстовые данные в R от столбцов к строке - PullRequest
0 голосов
/ 06 августа 2020

У меня проблема при попытке переместить текстовые данные в R из столбцов в строки. В данных есть числовые c и текстовые столбцы, но текстовые столбцы не поворачиваются? Я пробовал использовать dplyr, но буду использовать все, что работает?

Код

long=pivot_longer(original, c('Col1','Col2','Col3' ))

введите описание изображения здесь

Выход:

structure(list(Name = c("Joe", "Sanj", "Rob"), Date = c("12/08/2020", 
"13/08/2020", "14/08/2020"), Col1 = c(20, 60, 40), Col2 = c("blue", 
"red", "black"), Col3 = c(100, 233, 500)), row.names = c(NA, 
-3L), class = c("tbl_df", "tbl", "data.frame"))

Ответы [ 3 ]

1 голос
/ 06 августа 2020

Вы можете преобразовать все типы в character:

long %>% 
  mutate_all(as.character) %>% 
  pivot_longer(-c(Name, Date)) %>% 
  arrange(name) %>% 
  rename(`new col` = name,
         Value = value)



   Name  Date       `new col` Value
  <chr> <chr>      <chr>     <chr>
1 Joe   12/08/2020 Col1      20   
2 Sanj  13/08/2020 Col1      60   
3 Rob   14/08/2020 Col1      40   
4 Joe   12/08/2020 Col2      blue 
5 Sanj  13/08/2020 Col2      red  
6 Rob   14/08/2020 Col2      black
7 Joe   12/08/2020 Col3      100  
8 Sanj  13/08/2020 Col3      233  
9 Rob   14/08/2020 Col3      500  
0 голосов
/ 06 августа 2020

Вот решение data.table:

setDT(dt)
melt(dt, id=1:2, measure = 3:5)
0 голосов
/ 06 августа 2020

Другое решение (тидыр 1.1.1)

library(tidyverse) 
pivot_longer(df,
             -c(Name, Date),
             values_transform = list(value = as.character))

# A tibble: 9 x 4
  Name  Date       name  value
  <chr> <chr>      <chr> <chr>
1 Joe   12/08/2020 Col1  20   
2 Joe   12/08/2020 Col2  blue 
3 Joe   12/08/2020 Col3  100  
4 Sanj  13/08/2020 Col1  60   
5 Sanj  13/08/2020 Col2  red  
6 Sanj  13/08/2020 Col3  233  
7 Rob   14/08/2020 Col1  40   
8 Rob   14/08/2020 Col2  black
9 Rob   14/08/2020 Col3  500 
...