重塑tidyr数据

重塑tidyr数据,r,reshape,tidyr,R,Reshape,Tidyr,我想重塑一个非常简单的数据帧,但找不到方法 我尝试了这个解决方案: 和所有相关的解决方案,没有运气 我有一个整洁的数据框架,看起来像这样: df<-rbind(c('a','x1'),c('a','x2'),c('a','x3'), c('b','x6'),c('b','x7')) colnames(df)<-c('var','val') 我想要一个如下所示的数据帧: a x1 x2 x3 b x6 x7 NA 但是我得到了这个

我想重塑一个非常简单的数据帧,但找不到方法

我尝试了这个解决方案: 和所有相关的解决方案,没有运气

我有一个整洁的数据框架,看起来像这样:

    df<-rbind(c('a','x1'),c('a','x2'),c('a','x3'),
    c('b','x6'),c('b','x7'))
    colnames(df)<-c('var','val')
我想要一个如下所示的数据帧:

a   x1   x2   x3  
b   x6   x7   NA
但是我得到了这个错误


转换为数据后,我们需要一组序列。帧OP的示例是一个矩阵


仅供参考,您的df是矩阵而不是数据frame@Sotos:我试图在这里简化我拥有的实际数据帧。很抱歉我的无知,但是将我拥有的数据帧转换为矩阵将简化问题的解决方案?不,它需要是data.frame。不过没问题。我明白你的要求了。我只是在寻找一个重复的目标,因为这看起来像是一个以前被问过的问题:我在这里投反对票的原因是因为我认为你的重复回答实际上在网站上制造了很多噪音,因此没有帮助。他说他有一个数据框,但为了简单起见把矩阵放在这里,或者他这么认为,你的重新开放在我的反对意见中是不合理的,因此投了反对票。你分享的另一个链接,不是我的反对票。谢谢。这是一个矩阵,它必须经过几个步骤,请注意,您的序列创建是针对该dupe中的行索引,而注释是针对columnOk。你的意见。让我们同意不同意:祝你有一个愉快的一天
a   x1   x2   x3  
b   x6   x7   NA
Error: Each row of output must be identified by a unique combination of keys
library(dplyr)
library(tidyr)
library(stringr)
df %>% 
   as.data.frame %>%
   group_by(var) %>% 
   mutate(rn = str_c("col", row_number()))  %>% 
   spread(rn, val)
# A tibble: 2 x 4
# Groups:   var [2]
#  var   col1  col2  col3 
#  <fct> <fct> <fct> <fct>
#1 a     x1    x2    x3   
#2 b     x6    x7    <NA>