将多列转换为与各个记录对应的行

时间:2017-10-04 10:52:48

标签: r

我的挑战是我要转此:

original

分为:

desired

有人会知道如何做到这一点吗?非常感谢。尝试使用gather(),但并不真正理解它的机制!

2 个答案:

答案 0 :(得分:0)

tidyr::gatherreshape::melt可以将您的数据从宽格式转换为长格式。

library(tidyr)
gather(data, Type, Specializations, -Person)

library(reshape)
melt(data, id.vars="Person")

答案 1 :(得分:0)

以下是使用gather()包中的tidyr的可重现示例。对于您的下一个问题,请发布用于创建数据框的代码。换句话说,帮帮我吧!

library(tidyverse)

df <- tibble::tribble(
  ~person, ~s1, ~s2,
  "A", "Spec a", "Spec b",
  "B", "Spec c", "Spec d",
  "C", "Spec e", "Spec f"
)

df %>%
  gather(key = "Specialization_number", value = "Specialization", -person) %>%
  select(-Specialization_number) %>%
  arrange(person)

产生

# A tibble: 6 x 2
  person Specialization
   <chr>          <chr>
1      A         Spec a
2      A         Spec b
3      B         Spec c
4      B         Spec d
5      C         Spec e
6      C         Spec f