【发布时间】:2016-05-03 20:12:57
【问题描述】:
我不知道如何命名这个数据转换,也不知道是否存在某种函数可以使用
我的数据有这个形状:
rank abbrv country eci_value delta year
(int) (fctr) (fctr) (dbl) (int) (int)
1 30 BRA Brazil 0.5588656 2 1995
2 47 URY Uruguay 0.2098838 -14 1995
3 52 PAN Panama 0.1164776 2 1995
4 56 ARG Argentina 0.0013733 7 1995
5 58 VEN Venezuela -0.0329851 11 1995
6 64 COL Colombia -0.2216275 -2 1995
我想要一个数据框,其中仅包含“年份”、“排名”和以这种方式呈现的国家/地区提供的信息:
country 1995 1996 1997 1998 ...
Peru rank1995 rank1996 rank1997 rank1998 ...
Brazil rank1995 rank1996 rank1997 rank1998 ...
Chile rank1995 rank1996 rank1997 rank1998 ...
... ... ... ... ...
var "year" 范围从 1995 年到 2014 年,排名每年都不同
我曾想过使用 reshape2 包中的 melt 和 dcast 函数...但没有任何有用的结果。
谢谢
【问题讨论】:
-
dcast(yourdata, country ~ year, value.var = "rank")不适合你吗? -
你真的想要
rank1995用于Brazil在1995列中还是值30 ? -
天啊,我从来没想过要在没有融化的情况下使用 dcast。有效!谢谢! @steveb 是的,我想要的是 30 的值。
-
您也可以查看
tidyr。像df %>% select(country, year, rank) %>% spread(year, rank)这样的东西。这对你有用还是你更喜欢dcast和melt? -
这也是一个有趣的包@steveb,谢谢!
标签: r transformation reshape2