我想转换我的data.frame
这个表格:
Day Fruits
Monday Apple, Banana, Orange
Tuesday Apple, Banana
Thursday Orange, Melone
Saturday Apple
Sunday Banana
到那个表格:
Day Fruit
Monday Apple
Monday Banana
Monday Orange
Tuesday Apple
Tuesday Banana
Thursday Orange
Thursday Melone
Saturday Apple
Sunday Banana
我不知道如何解决的部分是fruit专栏有一个不同项目的列表。
这是我的工作范例:
day <- c("Monday", "Tuesday", "Thursday", "Saturday", "Sunday")
fruits <- c("Apple, Banana, Orange", "Apple, Banana", "Orange, Melone", "Apple", "Banana")
df <- data.frame(day, fruits)
df
library(reshape2)
df[, c(2:4)] <- colsplit(df[, 2], ", ", c("fruit1", "fruit2", "fruit3"))
df
melt(df, id.vars="day")
我可以将Fruits
列拆分为多个列,但问题是可能不仅仅有三个水果。我仍然没有按照我想要的那样将表格变成长格式。
感谢您的帮助!
答案 0 :(得分:1)
您可以简单地使用包splitstackshape。它为您完成所有工作。 :-)
cSplit 功能将连接数据拆分为单独的值。
你应该提到splitCols = "fruits"
,这是需要拆分的列。 comma
在此处的每列中都用作分隔符。我们将所需的方向指定为"long"
,因为我们正在使用colum-wise
library(splitstackshape)
df2 <- cSplit(df, splitCols = "fruits", sep = ", ", direction = "long")
> df2
# day fruits
#1: Monday Apple
#2: Monday Banana
#3: Monday Orange
#4: Tuesday Apple
#5: Tuesday Banana
#6: Thursday Orange
#7: Thursday Melone
#8: Saturday Apple
#9: Sunday Banana