【问题标题】:Grouping data and applying functions to the grouped data [duplicate]分组数据并将函数应用于分组数据[重复]
【发布时间】:2023-04-07 06:58:02
【问题描述】:

我正在尝试根据日期(一天内进行的所有观察)对数据进行分组,并应用一个函数来计数。分组数据中的观察值。

我为此目的的代码是:

Library(ggplot2)
library(lubridate)
library(tidyverse)


cmsaf_data <- read.csv("tmy_era_25.796_45.547_2005_2014.csv",
             skip = 16, header = T)

data <- cmsaf_data %>%
  mutate(time = mdy_hm(Date_Time),
         date = date(time), months = month(date))


data <- subset(data,Global.horizontal.irradiance..W.m2.>0) # subsetting based upon values of GHI > 0

year(data$date) <- 2007

summarised <- data %>%
  group_by(date) %>% summarise(hours = nrow(data))

在这段代码的最后一行,我试图对数据日期进行分组并计算否。观察结果,即现在我的数据中的行,但结果是没有得到。在特定组的行中,我没有。整个数据的行数。

以前我处理过相同的代码并将 sum 函数应用于我的分组数据,它运行良好!现在,当我尝试应用 nrow() 函数来计数时。行数,此代码不起作用。

我不确定自己犯了什么错误。如果有任何可以做的更正或我可以遵循的方法,请指导我!

指向我的数据的链接是: link

提前致谢!

【问题讨论】:

  • 我想知道你是否想使用n()而不是nrow(data)
  • 你得到了我的反对,因为你的代码不可重现。如果你能解决这个问题,我会收回我的反对票并给你一个赞成票。
  • @jazzurro n() 是为了什么?计算编号行数?
  • @Jawairia 是的。您按日期对数据进行分组,对吗?那么,为什么要统计整个数据集的行数呢?我想您想知道每个日期级别存在多少行。如果是这种情况,您可以简单地使用count(data, date) 或以您的方式使用group_by(date) %&gt;% summarise(hours = n())
  • @Jawairia 感谢您的更新,但仍然无法重现。您如何删除 CSV 文件中的第 1 行至第 16 行,我将撤回我的反对票并给您一个赞成票?至少通过这样做,人们无需额外工作即可读取 CSV 文件。请理解,由于一些潜在的风险或只是费时,没有多少人愿意下载 CSV 文件并进行研究。以后请研究如何使用dput分享数据。

标签: r group-by count tidyverse lubridate


【解决方案1】:

下面是nrow(data)n()分组数据框后的对比。要计算每组中的行数,我们应该使用n(),而nrow(data) 返回数据框的整个行号。

data %>%
  group_by(date) %>% summarise(hours = nrow(data))
# # A tibble: 365 x 2
#    date       hours
#    <date>     <int>
#  1 2007-01-01  4272
#  2 2007-01-02  4272
#  3 2007-01-03  4272
#  4 2007-01-04  4272
#  5 2007-01-05  4272
#  6 2007-01-06  4272
#  7 2007-01-07  4272
#  8 2007-01-08  4272
#  9 2007-01-09  4272
# 10 2007-01-10  4272
# # ... with 355 more rows

data %>%
  group_by(date) %>% summarise(hours = n())
# # A tibble: 365 x 2
#   date       hours
#    <date>     <int>
#  1 2007-01-01    10
#  2 2007-01-02    10
#  3 2007-01-03    10
#  4 2007-01-04    10
#  5 2007-01-05    10
#  6 2007-01-06    10
#  7 2007-01-07    10
#  8 2007-01-08    10
#  9 2007-01-09    10
# 10 2007-01-10    10
# # ... with 355 more rows

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 2021-11-10
    • 1970-01-01
    相关资源
    最近更新 更多