【发布时间】: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) %>% summarise(hours = n())。 -
@Jawairia 感谢您的更新,但仍然无法重现。您如何删除 CSV 文件中的第 1 行至第 16 行,我将撤回我的反对票并给您一个赞成票?至少通过这样做,人们无需额外工作即可读取 CSV 文件。请理解,由于一些潜在的风险或只是费时,没有多少人愿意下载 CSV 文件并进行研究。以后请研究如何使用
dput分享数据。
标签: r group-by count tidyverse lubridate