有没有一种方法可以重新排列数据框并将其变成3列数据框

时间:2019-06-18 01:41:18

标签: r dataframe reshape tibble

我很难弄清楚如何在变量/数据之间移动以实现3列数据框。原始数据框包含200多个列,我想四处移动数据,以使其看起来像下面显示的示例。

没有太多背景知识,因为我不确定如何开始转换数据框。

Candy_Hierarchy <- tribble(~COUNTRY, ~candy1, ~candy2, ~candy3,
              'US, Canada, and UK', 1.6, 1, 0.8, 
              'United States',1.67, 1, 1,
              'Canada', 2, 0, 1,
              'United Kingdom', 1, 2, 0)

进入

Candy_Hierarchy <- tribble(~Country, ~Candy, ~Average,
                 'US, Canada, and UK', 'candy1', 1.6,
                 'US, Canada, and UK', 'candy2', 1,
                 'US, Canada, and UK', 'candy3', 0.8,
                 'United States', 'candy1', 1.67,
                 'United States', 'candy2', 1,
                 'United States', 'candy3', 1,
                 'Canada', 'candy1', 2,
                 'Canada', 'candy2', 0,
                 'Canada', 'candy3', 1,
                 'United Kingdom', 'candy1', 1,
                 'United Kingdom', 'candy2', 2,
                 'United Kingdom', 'candy3', 0)

没有收到任何错误消息,因为我不确定如何实现自己的目标。

1 个答案:

答案 0 :(得分:1)

我们可以使用gather

library(tidyverse)

Candy_Hierarchy2 <- Candy_Hierarchy %>%
  gather(Candy, Average, -COUNTRY) %>%
  arrange(COUNTRY, Candy)
Candy_Hierarchy2
# # A tibble: 12 x 3
#   COUNTRY            Candy  Average
#   <chr>              <chr>    <dbl>
#  1 Canada             candy1    2   
#  2 Canada             candy2    0   
#  3 Canada             candy3    1   
#  4 United Kingdom     candy1    1   
#  5 United Kingdom     candy2    2   
#  6 United Kingdom     candy3    0   
#  7 United States      candy1    1.67
#  8 United States      candy2    1   
#  9 United States      candy3    1   
# 10 US, Canada, and UK candy1    1.6 
# 11 US, Canada, and UK candy2    1   
# 12 US, Canada, and UK candy3    0.8 
相关问题