R从旧data.table创建具有指定行的单列新data.table

R从旧data.table创建具有指定行的单列新data.table,r,data.table,R,Data.table,我有以下数据。表: Month Day Lat Long Temperature 1: 10 01 80.0 180 -6.383330333333309 2: 10 01 77.5 180 -6.193327999999976 3: 10 01 75.0 180 -6.263328333333312 4: 10 01 72.5 180 -5.759997333333306 5: 10 01 70.0 180 -

我有以下
数据。表

    Month Day  Lat Long        Temperature
 1:    10  01 80.0  180 -6.383330333333309
 2:    10  01 77.5  180 -6.193327999999976
 3:    10  01 75.0  180 -6.263328333333312
 4:    10  01 72.5  180 -5.759997333333306
 5:    10  01 70.0  180 -4.838330999999976
---                                       
117020:    12  31 32.5  310 11.840003833333355
117021:    12  31 30.0  310 13.065001833333357
117022:    12  31 27.5  310 14.685003333333356
117023:    12  31 25.0  310 15.946669666666690
117024:    12  31 22.5  310 16.578336333333358
对于每个位置(由
Lat
Long
给出),我有从10月1日到12月31日每天的温度

共有1272个位置,由
Lat
的每个成对组合组成:

    Lat
1   80.0
2   77.5
3   75.0
4   72.5
5   70.0
--------
21  30.0
22  27.5
23  25.0
24  22.5
Long

Long
1   180.0
2   182.5
3   185.0
4   187.5
5   190.0
---------
49  300.0
50  302.5
51  305.0
52  307.5
53  310.0
我正在尝试创建一个
data.table
,它由1272行(每个位置一行)和92列(每天一列)组成。该
数据的每个元素。表
将包含当天该位置的温度


关于如何在不使用
for
循环的情况下实现该目标,有什么建议吗?

这里我们使用
鸡重
作为数据,我们使用“鸡食”作为你的“lat lon”的等价物,“时间”作为你的“日期”:

产生:

     Chick Diet 0 2  4  6  8 10 12 14 16 18 20 21
 1:    18    1 1 1 NA NA NA NA NA NA NA NA NA NA
 2:    16    1 1 1  1  1  1  1  1 NA NA NA NA NA
 3:    15    1 1 1  1  1  1  1  1  1 NA NA NA NA
 4:    13    1 1 1  1  1  1  1  1  1  1  1  1  1
 5:   ... 46 rows omitted
您可能需要
lat+lon~Month+Day
或类似的公式


将来,请像我在这里所做的那样,使用内置的数据集来回答您的问题。

这里我们使用
鸡重
作为数据,其中我们使用“鸡食”作为您的“lat lon”,使用“时间”作为您的“日期”:

产生:

     Chick Diet 0 2  4  6  8 10 12 14 16 18 20 21
 1:    18    1 1 1 NA NA NA NA NA NA NA NA NA NA
 2:    16    1 1 1  1  1  1  1  1 NA NA NA NA NA
 3:    15    1 1 1  1  1  1  1  1  1 NA NA NA NA
 4:    13    1 1 1  1  1  1  1  1  1  1  1  1  1
 5:   ... 46 rows omitted
您可能需要
lat+lon~Month+Day
或类似的公式


将来,请像我在这里使用内置数据集那样提出您的问题。

首先使用
lubridate
包创建一个日期值(我假设年份为2014年,根据需要进行调整):


首先使用lubridate软件包创建日期值(我假设年份为2014年,根据需要进行调整):


哇,太好了。非常感谢您花时间制作这个示例,我一定会在以后的查询中这样做。哇,太好了。非常感谢您花时间制作这个示例,我一定会在以后的查询中这样做。
library(lubridate)
df$datetext <- paste(df$Month,df$Day,"2014",sep="-")
df$date <- mdy(df$datetext)
library(tidyr)
spread(df[,-c(1:2,6)],date,Temperature)

    Lat Long 2014-10-01 2014-12-31
1  22.5  310         NA   16.57834
2  25.0  310         NA   15.94667
3  27.5  310         NA   14.68500
4  30.0  310         NA   13.06500
5  32.5  310         NA   11.84000
6  70.0  180  -4.838331         NA
7  72.5  180  -5.759997         NA
8  75.0  180  -6.263328         NA
9  77.5  180  -6.193328         NA
10 80.0  180  -6.383330         NA