将列转换为行并为其提供数字

时间:2016-01-10 20:30:45

标签: r dataframe

我有一个这种格式的数据框:

df
name,status,text
stock1,open,text1 
stock1,closed,text something here

我希望将其转换为:

name,status1,status2,text1,text2
stock1,open,closed,text1,text something here

如何在不知道确切列数的情况下将其列转换为行?

1 个答案:

答案 0 :(得分:1)

我们可以使用dcast中的library(data.table)value.var可以使用多个setDT(df1)列。

我们将'data.frame'转换为'data.table'(dcast),按'name'分组,我们创建一个序列列('N'),然后使用value.var和指定library(data.table) setDT(df1)[, N:= 1:.N, name] dcast(df1, name~N, value.var=c("status", "text")) # name status_1 status_2 text_1 text_2 #1: stock1 open closed text1 text something here 列。

base R

按“名称”创建序列列后,reshape选项为df2 <- transform(df1, N= ave(seq_along(name), name, FUN=seq_along)) reshape(df2, idvar="name", timevar="N",direction="wide") # name status.1 text.1 status.2 text.2 #1 stock1 open text1 closed text something here

df1 <- structure(list(name = c("stock1", "stock1"), 
status = c("open", 
"closed"), text = c("text1 ", "text something here")), 
.Names = c("name", 
"status", "text"), class = "data.frame",
 row.names = c(NA, -2L))

数据

sudo CHMOD -R -N MYFOLDER