重塑 tidyr 数据
Reshaping tidyr data
我想重塑一个非常简单的数据框,但找不到方法
我试过这个解决方案:
和所有相关的解决方案,没有运气
我有一个整洁的数据框,看起来像这样:
df<-rbind(c('a','x1'),c('a','x2'),c('a','x3'),
c('b','x6'),c('b','x7'))
colnames(df)<-c('var','val')
尝试过
library(dplyr)
library(tidyr)
df %>%
gather(var, val, 2:ncol(df)) %>%
spread_(names(data)[1], "val")
我想要一个如下所示的数据框:
a x1 x2 x3
b x6 x7 NA
但是我得到这个错误
Error: Each row of output must be identified by a unique combination of keys
我们需要在转换为 data.frame
后按顺序分组(OP 的示例是 matrix
)
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>
我想重塑一个非常简单的数据框,但找不到方法
我试过这个解决方案:
我有一个整洁的数据框,看起来像这样:
df<-rbind(c('a','x1'),c('a','x2'),c('a','x3'),
c('b','x6'),c('b','x7'))
colnames(df)<-c('var','val')
尝试过
library(dplyr)
library(tidyr)
df %>%
gather(var, val, 2:ncol(df)) %>%
spread_(names(data)[1], "val")
我想要一个如下所示的数据框:
a x1 x2 x3
b x6 x7 NA
但是我得到这个错误
Error: Each row of output must be identified by a unique combination of keys
我们需要在转换为 data.frame
后按顺序分组(OP 的示例是 matrix
)
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>