有没有办法将共享相同ID的列值分隔为R中的单独列?

问题描述

我有一个数据框,其中有几行具有相同的ID号,每一列中都有字符值,我想将其拆分为单独的列。

我想从这样的事情出发:

id <- rep(1:5,each = 5)
source <- rep(c("One","Two","Three","Four","Five"),times = 5)  
dat_long <- cbind(id,source)

对于这样的事情:

id2 <- rep(1:5)

ess1 <- rep(c("One"),each = 5)
ess2 <-  rep(c("Two"),each = 5)
ess3 <- rep(c("Three"),each = 5)
ess4 <- rep(c("Four"),each = 5)
ess5 <-  rep(c("Five"),each = 5)

dat_wide <- cbind(id2,ess1,ess2,ess3,ess4,ess5)

我尝试了pivot_wider,重塑,分离但没有找到做我想做的方式的方法

解决方法

这将使您达到90%的水平。

library(tidyr)

pivot_wider(as.data.frame(dat_long),id_cols = id,names_from = source,values_from = source)

# A tibble: 5 x 6
  id    One   Two   Three Four  Five 
  <fct> <fct> <fct> <fct> <fct> <fct>
1 1     One   Two   Three Four  Five 
2 2     One   Two   Three Four  Five 
3 3     One   Two   Three Four  Five 
4 4     One   Two   Three Four  Five 
5 5     One   Two   Three Four  Five