如何在R中重新排列数据表的格式?

如何在R中重新排列数据表的格式?,r,dataframe,dplyr,data.table,tidyverse,R,Dataframe,Dplyr,Data.table,Tidyverse,我需要将表安排成以下格式,以便其他人清楚地看到哪个名称是重复的,以及相应的值 #original df df <- data.frame(name=c('a','a','a','b','b'), value=(c(1,2,3,4,5)),stringsAsFactors = FALSE) #df name value a 1 a 2 a 3 b 4 b 5 #target df name

我需要将表安排成以下格式,以便其他人清楚地看到哪个名称是重复的,以及相应的值

#original df
df <- data.frame(name=c('a','a','a','b','b'),
             value=(c(1,2,3,4,5)),stringsAsFactors = FALSE)
#df
name    value
a        1
a        2
a        3
b        4
b        5

#target df
name1    value1         name2    value2    name3    value3
a        1               a        2          a        3
b        4               b        5          NA       NA
#原始df

df这是一个
数据表
解决方案。您可以使用
rleid
在每个
name
内创建索引(
id
),然后使用
name
对照该
id
透视数据

library(data.table)
setDT(df)
df[, id := rleid(value), by=name]
dcast(df, name ~ id, value.var="value")
输出:

   name 1 2  3
1:    a 1 2  3
2:    b 4 5 NA