gpt4 book ai didi

r - 在 R 中将 n x m 数据帧转换为 1 x n*m 数据帧

转载 作者:行者123 更新时间:2023-12-04 11:02:13 24 4
gpt4 key购买 nike

我有一个名为“d”的数据框,其格式如下:

        Date   Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct   Nov  Dec
1 1895 12.63 2.47 2.69 2.43 3.10 1.65 0.13 0.24 1.78 0.18 3.32 7.78
2 1896 13.08 3.86 5.14 5.91 1.61 0.10 0.00 0.05 0.44 3.76 9.51 8.71
3 1897 4.10 7.16 6.38 0.85 0.47 0.87 0.00 0.00 0.46 2.51 5.27 3.40
4 1898 1.97 6.14 0.29 0.30 2.40 0.49 0.00 0.00 1.10 1.32 2.40 2.11
5 1899 7.61 2.69 8.12 1.56 1.66 0.75 0.00 0.18 0.31 7.87 10.79 5.20
6 1900 8.68 2.44 3.53 1.75 2.95 0.33 0.00 0.25 0.60 5.69 9.38 5.00

我想用下面的形式重写它
        Date               Precip
1 1895-01-01 12.63
2 1895-02-01 2.47
3 1895-03-01 2.69
4 1895-04-01 2.43

...

70 1900-10-01 5.69
71 1900-11-01 9.38
72 1900-12-01 5.00

我能想到的唯一方法是创建一个新的数据帧,其中包含按月从开始到结束的日期序列,然后使用 rbind 将数据帧“d”的行连接到新数据帧。有没有更干净的方法来做到这一点而不使用 for 循环?感谢您的帮助!

最佳答案

我是用 stack 做的和 as.Date

dat.l <- data.frame(dat[,1],stack(dat[,-1]))
dat <- data.frame(Date =as.Date(paste(dat.l[,1],dat.l[,3],'01',sep='/'),format='%Y/%b/%d'),
Precip= dat.l[,2])

Date Precip
1 1895-01-01 12.63
2 1896-01-01 13.08
3 1897-01-01 4.10
.....

70 1898-12-01 2.11
71 1899-12-01 5.20
72 1900-12-01 5.00

我注意到我的数据没有按日期排序:
  dat[order(dat$Date),]
Date Precip
1 1895-01-01 12.63
7 1895-02-01 2.47
13 1895-03-01 2.69
19 1895-04-01 2.43
25 1895-05-01 3.10
31 1895-06-01 1.65

关于r - 在 R 中将 n x m 数据帧转换为 1 x n*m 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15168936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com