【问题标题】:How to assign mutate and distinct to another variable in R?如何将 mutate 和 distinct 分配给 R 中的另一个变量?
【发布时间】:2018-09-12 04:07:37
【问题描述】:

enter image description here我有一个庞大的数据集,每 30 秒就有一次数据。首先,我得到每小时数据的平均值,然后对每日数据求和,然后再对每月数据求和。我需要将 mutate 函数分配给一个名为 mE_131 的新数据集/变量。用于绘制每月价值。我是新手,请帮助!

library(dplyr)
library(ggplot2)

attach(data)
data%>% #filtering 131 and 132
  select(time,Column3,m_Pm) %>%
  filter(data,Column3=="131") 
filter(data,Column3=="132")
data_131<-filter(data,Column3=="131") 
data_132<-filter(data,Column3=="132") 

data_131%>%
  mutate(datehour= format(time,"%Y-%m-%d %H"), date1= format(time,"%Y-%m-%d"), month=format(time,"%Y-%m")) %>% 
  group_by(datehour) %>% mutate(hourlyP=mean(m_Pm)) %>% distinct(datehour, .keep_all = TRUE) %>% 
  group_by(date1) %>% mutate(dailyP=sum(hourlyP)) %>% distinct(date1, .keep_all = TRUE) %>% 
  group_by(month) %>% summarise(monthlyP=sum(dailyP))

【问题讨论】:

  • 您能否举例说明data 的外观以及您希望得到什么样的输出?
  • 这是我的数据。检查链接....stackoverflow.com/questions/52252916/…
  • @JonSpring 我只想将我的变异分配给另一个名为 mE_131 的数据集来绘制它,然后与另一个数据集进行比较。谢谢
  • 很抱歉,我仍然不明白您希望做什么。有没有办法展示你想要的例子?
  • 看来你在正确的轨道上,只需要在最后一行添加` %>% ggplot(aes(month,monthlyP)) + geom_point()`。

标签: r dplyr


【解决方案1】:

如果您的目标是比较 column3 == 131column3 == 132 之间的每月数据,那么您不一定需要为每个数据创建单独的数据集,尽管我会在最后向您展示如何做到这一点。

首先,让我们为131132 创建所需的摘要:

data <- data %>%
    filter(column3 == "131" | column3 == "132") %>% # filtering the required data only
    mutate(datehour= format(time,"%Y-%m-%d %H"), # calculate the required stats
          date1= format(time,"%Y-%m-%d"),
          month=format(time,"%Y-%m")) %>% 
   group_by(datehour) %>%
   mutate(hourlyP=mean(m_Pm)) %>%
   distinct(datehour, .keep_all = TRUE) %>% 
   group_by(date1) %>%
   mutate(dailyP=sum(hourlyP)) %>%
   distinct(date1, .keep_all = TRUE) %>%
   group_by(month) %>% 
   summarise(monthlyP=sum(dailyP))

注意:为了提高可读性,我将代码的每一部分都写在单独的行中,但它与上面显示的代码基本相同。

现在,让我们进行绘图:

data %>%
    ggplot(aes(x=month, y=monthlyP, fill=column3)) +
    geom_bar(position="dodge") # this will produce similar plot as in your example

如果您坚持为column3 中的每个值使用单独的数据集,那么您可以简单地使用赋值运算符&lt;- 创建一个新的数据框,如下所示

mE_131 <- data_131 %>%
   mutate(datehour= format(time,"%Y-%m-%d %H"), 
          date1= format(time,"%Y-%m-%d"),
          month=format(time,"%Y-%m")) %>% 
   group_by(datehour) %>%
   mutate(hourlyP=mean(m_Pm)) %>%
   distinct(datehour, .keep_all = TRUE) %>% 
   group_by(date1) %>%
   mutate(dailyP=sum(hourlyP)) %>%
   distinct(date1, .keep_all = TRUE) %>%
   group_by(month) %>% 
   summarise(monthlyP=sum(dailyP))

然后做同样的事情来创建mE_132。但是,我不建议这样做,因为绘制它们会更困难。

【讨论】:

  • 我也这样做,mE_131% group_by(datehour) %>% mutate(hourlyP=mean(m_Pm)) %>% distinct(datehour , .keep_all = TRUE) %>% group_by(date1) %>% mutate(dailyP=sum(hourlyP)) %>% distinct(date1, .keep_all = TRUE) %>% group_by(month) %>% summarise(monthlyP =sum(dailyP))) ??????
  • 我的函数是大变异函数。
  • 请帮忙。我是新手
  • 请看编辑,这是你要找的吗?
  • 有点相同的数据集。但错误stackoverflow.com/questions/52277425/…请帮帮我...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-09
相关资源
最近更新 更多