R 扩展以使高数据变宽,而不是通过将行折叠为列

R 扩展以使高数据变宽,而不是通过将行折叠为列,r,tidyr,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

我正试图通过将多个列合并到一个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)

t你是这么想的吗

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

我想您只需要添加变异步骤就可以了。

在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
dft
身份证代码类型9代码类型10
1  1           5            4
2  2           7            6

不确定您所说的“它创建列但不压缩行”是什么意思。添加
sep=“\ux”后,我得到的似乎是您的输出
排列
调用发生的事情是,我在数据帧的末尾得到了两列,它们是代码类型的列,但数据仍然很高。您应该确保此示例正确表示了您的数据
spread(df,code\u Type,code,sep=“”
为我准确地获取您的输出,但这可能是因为存在更多列