首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重塑tidyr数据

重塑tidyr数据
EN

Stack Overflow用户
提问于 2019-07-04 13:36:41
回答 1查看 71关注 0票数 0

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

我尝试过这个解决方案:Transposing data frames和所有相关的解决方案,但没有成功。

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

代码语言:javascript
复制
    df<-rbind(c('a','x1'),c('a','x2'),c('a','x3'),
    c('b','x6'),c('b','x7'))
    colnames(df)<-c('var','val')

并试着

代码语言:javascript
复制
library(dplyr)
library(tidyr)
df %>%
  gather(var, val, 2:ncol(df)) %>%
  spread_(names(data)[1], "val")

我想要一个看起来像:

代码语言:javascript
复制
a   x1   x2   x3  
b   x6   x7   NA

但我知道这个错误

错误:每一行输出必须由唯一的键组合标识。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-04 13:45:23

在转换成data.frame之后,我们需要一个按序列分组(OP的例子是一个matrix)

代码语言:javascript
复制
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> 
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56889188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档