R 给定纬度和经度的月平均数据?

R 给定纬度和经度的月平均数据?,r,R,我有一个包含以下标题和示例数据的表 Lat Long Date Value. 30.497478 -87.880258 01/01/2016 10 30.497478 -87.880258 01/02/2016 15 30.497478 -87.880258 01/05/2016 20 33.284928 -85.803608 01/02

我有一个包含以下标题和示例数据的表

Lat            Long           Date          Value.
30.497478    -87.880258      01/01/2016       10
30.497478    -87.880258      01/02/2016       15
30.497478    -87.880258      01/05/2016       20
33.284928    -85.803608      01/02/2016       10
33.284928    -85.803608      01/03/2016       15
33.284928    -85.803608      01/05/2016       20
我想每月为一个特定的位置平均值列

因此,示例输出是

Lat              Long         Month      Avg Value
30.497478      -87.880258    January     15

您可以尝试以下操作,但它首先使用package
zoo
修改数据框,添加一个额外的列
Month

library(zoo)

dat$Month <- as.yearmon(as.Date(dat$Date, "%m/%d/%Y"))

aggregate(Value. ~ Lat + Long + Month, dat, mean)
#       Lat      Long    Month Value.
#1 30.49748 -87.88026 jan 2016     15
#2 33.28493 -85.80361 jan 2016     15

您可以尝试以下操作,但它首先使用package
zoo
修改数据框,添加一个额外的列
Month

library(zoo)

dat$Month <- as.yearmon(as.Date(dat$Date, "%m/%d/%Y"))

aggregate(Value. ~ Lat + Long + Month, dat, mean)
#       Lat      Long    Month Value.
#1 30.49748 -87.88026 jan 2016     15
#2 33.28493 -85.80361 jan 2016     15

使用
dplyr
lubridate
的解决方案

library(dplyr)
library(lubridate)

dt2 <- dt %>%
  mutate(Date = mdy(Date), Month = month(Date)) %>%
  group_by(Lat, Long, Month) %>%
  summarise(`Avg Value` = mean(Value))
dt2
# A tibble: 2 x 4
# Groups:   Lat, Long [?]
       Lat      Long Month `Avg Value`
     <dbl>     <dbl> <dbl>       <dbl>
1 30.49748 -87.88026     1          15
2 33.28493 -85.80361     1          15
库(dplyr)
图书馆(lubridate)
dt2%
突变(日期=mdy(日期),月份=MOUNT(日期))%>%
分组依据(纬度、经度、月份)%>%
总结(`Avg值`=平均值)
dt2
#一个tibble:2x4
#组:横向、纵向[?]
Lat长月平均值`
1 30.49748 -87.88026     1          15
2 33.28493 -85.80361     1          15

使用
dplyr
lubridate
的解决方案

library(dplyr)
library(lubridate)

dt2 <- dt %>%
  mutate(Date = mdy(Date), Month = month(Date)) %>%
  group_by(Lat, Long, Month) %>%
  summarise(`Avg Value` = mean(Value))
dt2
# A tibble: 2 x 4
# Groups:   Lat, Long [?]
       Lat      Long Month `Avg Value`
     <dbl>     <dbl> <dbl>       <dbl>
1 30.49748 -87.88026     1          15
2 33.28493 -85.80361     1          15
库(dplyr)
图书馆(lubridate)
dt2%
突变(日期=mdy(日期),月份=MOUNT(日期))%>%
分组依据(纬度、经度、月份)%>%
总结(`Avg值`=平均值)
dt2
#一个tibble:2x4
#组:横向、纵向[?]
Lat长月平均值`
1 30.49748 -87.88026     1          15
2 33.28493 -85.80361     1          15


如何计算
Lat
Long
?@Patrick您需要提供更多信息。这些数字是如何计算的?到目前为止您尝试了什么?如何计算
Lat
Long
?@Patrick您需要提供更多信息。这些数字是如何计算的?到目前为止您尝试了什么?谢谢您的回复。我尝试使用该代码,并得到以下错误消息。as.Date(dat$Date,“%m/%d/%Y”)中出错:找不到对象“dat”。你能告诉我我做错了什么吗。这是我第一次使用R.
dat
是我给您的数据集示例起的名字。您可以通过将我答案的最后一部分复制并粘贴到您的
R
会话中,然后运行代码
dat来重新创建它。这对我来说太完美了。我使用read.csv导入了一个数据集,并将其命名为dat,然后您的代码完成了其余的工作。我有一个问题,当我使用write.csv时,我看不到输出,只是上一步,它添加了另一个名为month的列。如何以csv格式导出此最终结果?再次非常感谢。@Patrick你将不得不保存
agg的结果。谢谢你,这对我来说是可行的。只花了几秒钟,excel就永远无法使用了。我的数据集类似于424271行,如果每天有一个数据点,那么新的agg csv将压缩为13910行appx。然而,它浓缩到11342行,这让我相信可能有几天会有多个值。这是一个如此庞大的数据集,很难手动检查是否一切正常。您对我如何为这个庞大的数据集建立正确工作的代码有什么建议吗?谢谢您的回复。我尝试使用该代码,并得到以下错误消息。as.Date(dat$Date,“%m/%d/%Y”)中出错:找不到对象“dat”。你能告诉我我做错了什么吗。这是我第一次使用R.
dat
是我给您的数据集示例起的名字。您可以通过将我答案的最后一部分复制并粘贴到您的
R
会话中,然后运行代码
dat来重新创建它。这对我来说太完美了。我使用read.csv导入了一个数据集,并将其命名为dat,然后您的代码完成了其余的工作。我有一个问题,当我使用write.csv时,我看不到输出,只是上一步,它添加了另一个名为month的列。如何以csv格式导出此最终结果?再次非常感谢。@Patrick你将不得不保存
agg的结果。谢谢你,这对我来说是可行的。只花了几秒钟,excel就永远无法使用了。我的数据集类似于424271行,如果每天有一个数据点,那么新的agg csv将压缩为13910行appx。然而,它浓缩到11342行,这让我相信可能有几天会有多个值。这是一个如此庞大的数据集,很难手动检查是否一切正常。您对我如何为这个庞大的数据集建立正确工作的代码有什么建议吗?谢谢您的回复。我得到以下错误消息。UseMethod(“mutate_u2;”)中出错:没有适用于类“function”的对象的“mutate_2;”方法。你能告诉我我做错了什么吗。再次感谢您可能将mutate应用于函数,例如df。你需要对你的数据框应用mutate,效果很好。你能告诉我代码,如果我想添加中值和SD也。Thanks@Patrick将
Median\u Value=Median(Value)
SD\u Value=SD(Value)
放入
summary
功能中。感谢您的回复。我得到以下错误消息。UseMethod(“mutate_u2;”)中出错:没有适用于类“function”的对象的“mutate_2;”方法。你能告诉我我做错了什么吗。再次感谢您可能将mutate应用于函数,例如df。你需要对你的数据框应用mutate,效果很好。你能告诉我代码,如果我想添加中值和SD也。Thanks@Patrick将
Median\u Value=Median(Value)
SD\u Value=SD(Value)
放入
summary
功能中。