相关疑难解决方法(0)

将数据框架从宽格式转换为长格式

将我data.frame从宽表转换为长表时遇到一些麻烦.目前它看起来像这样:

Code Country        1950    1951    1952    1953    1954
AFG  Afghanistan    20,249  21,352  22,532  23,557  24,555
ALB  Albania        8,097   8,986   10,058  11,123  12,246
Run Code Online (Sandbox Code Playgroud)

现在我想把它data.frame变成一个长期的data.frame.像这样的东西:

Code Country        Year    Value
AFG  Afghanistan    1950    20,249
AFG  Afghanistan    1951    21,352
AFG  Afghanistan    1952    22,532
AFG  Afghanistan    1953    23,557
AFG  Afghanistan    1954    24,555
ALB  Albania        1950    8,097
ALB  Albania        1951    8,986
ALB  Albania        1952    10,058
ALB  Albania        1953    11,123
ALB  Albania        1954    12,246
Run Code Online (Sandbox Code Playgroud)

我已经看过并尝试了它melt()reshape()功能,因为有些人提出了类似的问题.但是,到目前为止我只得到凌乱的结果.

如果有可能我想用这个reshape() …

r reshape dataframe r-faq

142
推荐指数
7
解决办法
9万
查看次数

在tidyr中,函数"聚集"使用什么标准来将数据帧从宽到长映射?

我试图找出论据gathertidyr包.

我查看了文档,语法如下:

gather(data, key, value, ..., na.rm = FALSE, convert = FALSE)

帮助文件中有一个示例:

stocks <- data.frame(
  time = as.Date('2009-01-01') + 0:9,
  X = rnorm(10, 0, 1),
  Y = rnorm(10, 0, 2),
  Z = rnorm(10, 0, 4)
)

gather(stocks, stock, price, -time)
Run Code Online (Sandbox Code Playgroud)

我对最后一行感到好奇:
gather(stocks, stock, price, -time)

在这里,stocks显然是我们想要修改的数据,这很好.

所以我可以读取它stock并且price是键值对的参数 - 但是这个函数如何决定如何选择列来创建这个键值对?原始数据框如下所示:

time        X            Y          Z
2009-01-01  1.10177950  -1.1926213  -7.4149618
2009-01-02  0.75578151  -4.3705737  -0.3117843
2009-01-03  -0.23823356 -1.3497319  3.8742654
2009-01-04  0.98744470 …
Run Code Online (Sandbox Code Playgroud)

r dataframe reshape2 tidyr

5
推荐指数
1
解决办法
1886
查看次数

标签 统计

dataframe ×2

r ×2

r-faq ×1

reshape ×1

reshape2 ×1

tidyr ×1