扩展而不是将行折叠为列以扩展高数据范围

时间:2019-04-23 20:06:08

标签: r tidyr

我正在尝试通过将多个列合并到一个ID来变大数据集。

我一直在使用Spread,但是目前我只获得了Spread创建的列,但行数仍然与以前一样。 我目前有:

  ID Code_Type Code
   1   10        4
   1    9        5 
   2    10       6
   2    9        7

我想要:

ID  Code_Type_10  Code_type_9
1       4              5
2       6              7

这是我当前的代码

t <- spread(df, Code_Type, Code)

但是,当我这样做时,它会创建列,但不会压缩行。

2 个答案:

答案 0 :(得分:1)

在MDEWITT的条目中添加一些内容

df <- data.frame("ID" = c(1,1,2,2), 
                 "Code_Type" = c(10,9,10,9), 
                 "Code" = c(4,5,6,7))

t <- tidyr::spread(df, Code_Type, Code)
names(t)[c(2,3)] <- paste0(rep("Code_Type_", 2), names(t)[c(2,3)])

df %>% 
  mutate(Code_Type = paste0("Code_Type_", Code_Type)) %>% 
  spread(Code_Type, Code)

> t
  ID Code_Type_9 Code_Type_10
1  1           5            4
2  2           7            6

答案 1 :(得分:0)

这是您的想法吗?

df %>% 
  mutate(Code_Type = paste0("Code_Type_", Code_Type)) %>% 
  spread(Code_Type, Code)

我认为您只需添加mutate步骤即可使其工作。