df <- data.frame(
col1 = rep(1:5, each=2),
col2 = 1:10,
col3 = 11:20,
col4 = 21:30
); df
## col1 col2 col3 col4
## 1 1 1 11 21
## 2 1 2 12 22
## 3 2 3 13 23
## 4 2 4 14 24
## 5 3 5 15 25
## 6 3 6 16 26
## 7 4 7 17 27
## 8 4 8 18 28
## 9 5 9 19 29
## 10 5 10 20 30
df_mod1 <- reshape2::melt(df, id.vars='col1',
measure.vars=c('col2', 'col3', 'col4')); df_mod1
## col1 variable value
## 1 1 col2 1
## 2 1 col2 2
## 3 2 col2 3
## 4 2 col2 4
## 5 3 col2 5
## 6 3 col2 6
## 7 4 col2 7
## 8 4 col2 8
## 9 5 col2 9
## 10 5 col2 10
## 11 1 col3 11
## 12 1 col3 12
## 13 2 col3 13
## 14 2 col3 14
## 15 3 col3 15
## 16 3 col3 16
## 17 4 col3 17
## 18 4 col3 18
## 19 5 col3 19
## 20 5 col3 20
## 21 1 col4 21
## 22 1 col4 22
## 23 2 col4 23
## 24 2 col4 24
## 25 3 col4 25
## 26 3 col4 26
## 27 4 col4 27
## 28 4 col4 28
## 29 5 col4 29
## 30 5 col4 30
df_mod2 <- df %>%
gather("col2", "col3", "col4", key = cols, value = value); df_mod2
## col1 cols value
## 1 1 col2 1
## 2 1 col2 2
## 3 2 col2 3
## 4 2 col2 4
## 5 3 col2 5
## 6 3 col2 6
## 7 4 col2 7
## 8 4 col2 8
## 9 5 col2 9
## 10 5 col2 10
## 11 1 col3 11
## 12 1 col3 12
## 13 2 col3 13
## 14 2 col3 14
## 15 3 col3 15
## 16 3 col3 16
## 17 4 col3 17
## 18 4 col3 18
## 19 5 col3 19
## 20 5 col3 20
## 21 1 col4 21
## 22 1 col4 22
## 23 2 col4 23
## 24 2 col4 24
## 25 3 col4 25
## 26 3 col4 26
## 27 4 col4 27
## 28 4 col4 28
## 29 5 col4 29
## 30 5 col4 30
df_mod3 <- df %>%
pivot_longer(cols = c("col2", "col3", "col4"), names_to = "cols", values_to = "value") %>%
arrange(cols); df_mod3
## # A tibble: 30 x 3
## col1 cols value
## <int> <chr> <int>
## 1 1 col2 1
## 2 1 col2 2
## 3 2 col2 3
## 4 2 col2 4
## 5 3 col2 5
## 6 3 col2 6
## 7 4 col2 7
## 8 4 col2 8
## 9 5 col2 9
## 10 5 col2 10
## # ... with 20 more rows
col1 variable value
reshape2::dcast(data = df_mod1, formula = col1 ~ variable, sum, value.var = "value")
## col1 col2 col3 col4
## 1 1 3 23 43
## 2 2 7 27 47
## 3 3 11 31 51
## 4 4 15 35 55
## 5 5 19 39 59
df_mod3 %>% spread( key = cols, value = value)
spread()는 데이터 중복으로 인해 error 발생
df_mod3 %>%
pivot_wider(names_from = cols, values_from = value, values_fn = list) %>%
unnest(cols = everything())
## # A tibble: 10 x 4
## col1 col2 col3 col4
## <int> <int> <int> <int>
## 1 1 1 11 21
## 2 1 2 12 22
## 3 2 3 13 23
## 4 2 4 14 24
## 5 3 5 15 25
## 6 3 6 16 26
## 7 4 7 17 27
## 8 4 8 18 28
## 9 5 9 19 29
## 10 5 10 20 30