我正在尝试根据日期(一天内所有观察结果)对数据进行分组,并应用函数来计算否。分组数据中的观察结果。
我的代码是:
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
提前致谢!
答案 0 :(得分: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