v*******e 发帖数: 133 | 1 df1:
Product Color
A RED
A BLACK
A YELLOW
B RED
B WHITE
C GREEN
......
我要的 df2
Product Color1 Color2 Color3
A Red Black Yellow
B Yellow Red
C Green
.....
Thanks! | v*******e 发帖数: 133 | 2 目前我只能做到:
df2=aggregate(Color~Product, data = df1, FUN=paste, collapse = " ")
所以color变成了同一个column.
【在 v*******e 的大作中提到】 : df1: : Product Color : A RED : A BLACK : A YELLOW : B RED : B WHITE : C GREEN : ...... : 我要的 df2
| l******n 发帖数: 9344 | 3 直接transpose就好
【在 v*******e 的大作中提到】 : 目前我只能做到: : df2=aggregate(Color~Product, data = df1, FUN=paste, collapse = " ") : 所以color变成了同一个column.
| v*******e 发帖数: 133 | 4 麻烦指点一下,总是说column的长度不一。
谢谢
【在 l******n 的大作中提到】 : 直接transpose就好
| v*******e 发帖数: 133 | 5 下面code可以,但是我觉得还是太复杂了
Product=c("A","A","A","B","B","C")
Color=c("red","yellow","black","yellow","white","black")
df1=data.frame(Product,Color)
b=aggregate(Color~Product, data = df1, FUN=paste, collapse = " ")
c <- strsplit((b$Color), " ")
maxLen <- max(sapply(c, length))
d<- as.data.frame(t(sapply(c, function(x) c(x, rep(" ", maxLen - length(x)))
)))
colnames(d) <- paste("Color", 1:maxLen, sep="")
df2=cbind(df1[,-c(2)], d)
【在 v*******e 的大作中提到】 : 麻烦指点一下,总是说column的长度不一。 : 谢谢
| k*******a 发帖数: 772 | 6 library(dplyr)
library(reshape2)
df1 <- group_by(df1, Product) %>% mutate(id = paste0("Color", 1:n()))
dcast(df1, Product~id, value.var = "Color") | l******n 发帖数: 9344 | 7 recast(df1, Product ~ Color)
【在 v*******e 的大作中提到】 : df1: : Product Color : A RED : A BLACK : A YELLOW : B RED : B WHITE : C GREEN : ...... : 我要的 df2
|
|