转换为宽格式,同时在R中保留一些列

时间:2018-09-05 15:08:09

标签: r dataframe dplyr tidyr

我有一张这样的桌子:

Type, ID, Name, Time
a, 1, abc, 2017-01-01 00:00:00
b, 1, abc, 2017-01-01 00:01:00
a, 1, abc, 2017-01-01 00:02:00
b, 1, abc, 2017-01-01 00:03:00

我正尝试转换成这样的宽格式:

ID, Name, a, b
1, abc, 2017-01-01 00:00:00, 2017-01-01 00:01:00
1, abc, 2017-01-01 00:02:00, 2017-01-01 00:03:00

我正在使用tidyr的传播功能,但是如何保留ID和名称列?

1 个答案:

答案 0 :(得分:2)

在通过“类型”,“ ID”和“名称”列创建序列列之后,我们可以使用Comparator<Number>

spread

数据

library(tidyverse)
df %>%
  group_by(Type, ID, Name) %>%
  mutate(n = row_number()) %>%
  spread(Type, Time) %>%
  select(-n)
# A tibble: 2 x 4
# Groups:   ID, Name [1]
#  ID    Name  a                   b                  
#  <chr> <chr> <chr>               <chr>              
#1 1     abc   2017-01-01 00:00:00 2017-01-01 00:01:00
#2 1     abc   2017-01-01 00:02:00 2017-01-01 00:03:00