【问题标题】:Data transformation, almost like when you use cast and melt数据转换,几乎就像你使用 cast 和 melt
【发布时间】: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 用于Brazil1995 列中还是值30 ?
  • 天啊,我从来没想过要在没有融化的情况下使用 dcast。有效!谢谢! @steveb 是的,我想要的是 30 的值。
  • 您也可以查看tidyr。像df %>% select(country, year, rank) %>% spread(year, rank) 这样的东西。这对你有用还是你更喜欢dcastmelt
  • 这也是一个有趣的包@steveb,谢谢!

标签: r transformation reshape2


【解决方案1】:

这可能对你有用。这是一个使用dplyrtidyr 的示例,使用上面的小样本(您必须在更大的数据集上进行测试或提供一个)。

library(dplyr)
library(tidyr)

df
#  rank abbrv   country  eci_value delta year
#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

df %>% select(country, year, rank) %>% spread(year, rank)
#    country 1995
#1 Argentina   56
#2    Brazil   30
#3  Colombia   64
#4    Panama   52
#5   Uruguay   47
#6 Venezuela   58

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    相关资源
    最近更新 更多