У меня есть следующий фрейм данных в R:

Name    Year     Apples   Bananas    
Tom     2012        3       4
John    2012        0       1
John    2013        3       2
John    2014        5       3
Alexa   2012        2       2
Alexa   2013        2       1    

Я хотел бы преобразовать или изменить фрейм данных, чтобы частота яблок и бананов на человека была представлена ​​в фреймворке данных. Вот так: было бы идеально использовать пакеты dplyr или reshape.

Name   Year.    Fruit
Tom    2012     Apples
Tom    2012     Apples
Tom    2012     Apples
Tom    2012     Bananas
Tom    2012     Bananas
Tom    2012     Bananas
John   2012     Bananas
John   2013     Apples
John   2013     Apples
John   2013     Apples
John   2013     Bananas
John   2013     Bananas
John   2014     Apples
John   2014     Apples
John   2014     Apples
John   2014     Apples
John   2014     Apples
John   2014     Bananas
John   2014     Bananas
John   2014     Bananas

Др

1
aholtz 9 Фев 2021 в 18:03

1 ответ

Лучший ответ
library( data.table )

#sample data
# mydata <- fread( "Name    Year     Apples   Bananas
# Tom     2012        3       4
# John    2012        0       1
# John    2013        3       2
# John    2014        5       3
# Alexa   2012        2       2
# Alexa   2013        2       1   ")

ans <- melt( setDT( mydata ), id.vars = c("Name","Year"), variable.name = "Fruit" )
ans[ rep(seq(.N), value), !"value"]

вывод

#      Name Year   Fruit
#  1:   Tom 2012  Apples
#  2:   Tom 2012  Apples
#  3:   Tom 2012  Apples
#  4:  John 2013  Apples
#  5:  John 2013  Apples
#  6:  John 2013  Apples
#  7:  John 2014  Apples
#  8:  John 2014  Apples
#  9:  John 2014  Apples
# 10:  John 2014  Apples
# 11:  John 2014  Apples
# 12: Alexa 2012  Apples
# 13: Alexa 2012  Apples
# 14: Alexa 2013  Apples
# 15: Alexa 2013  Apples
# 16:   Tom 2012 Bananas
# 17:   Tom 2012 Bananas
# 18:   Tom 2012 Bananas
# 19:   Tom 2012 Bananas
# 20:  John 2012 Bananas
# 21:  John 2013 Bananas
# 22:  John 2013 Bananas
# 23:  John 2014 Bananas
# 24:  John 2014 Bananas
# 25:  John 2014 Bananas
# 26: Alexa 2012 Bananas
# 27: Alexa 2012 Bananas
# 28: Alexa 2013 Bananas
#      Name Year   Fruit
1
Wimpel 9 Фев 2021 в 15:11