列名称作为每行中的值

时间:2018-01-09 01:17:01

标签: r dplyr tidyr

我有一个类似于以下(前3行)的DataFrame

  cap_color gill_color spore_print_color stalk_color veil_color
1     brown      black             black      purple      white
2    yellow      black             brown      purple      white
3     white      brown             brown      purple      white

现在我想让它显示出来:

 color              part
1   brown         cap_color
2  yellow         cap_color
3   white         cap_color
4   black        gill_color
5   black        gill_color
6   brown        gill_color
7   black spore_print_color
8   brown spore_print_color
9   brown spore_print_color
10 purple       stalk_color
11 purple       stalk_color
12 purple       stalk_color
13  white        veil_color
14  white        veil_color
15  white        veil_color

我知道这个问题可以通过循环来解决,但我想知道是否存在一个矢量化函数来使其更快。

1 个答案:

答案 0 :(得分:0)

看起来比较复杂,只需使用tidyrgather()

代码很简单:

require(tidyr)
newDF <- df%>%
gather(part, color)

你应该拥有你想要的东西......