df_all1_new <- df_all1 %>% group_by(Year, cut_day) %>% summarise(站数 = n_distinct(站点)) %>% ungroup()统计不出来Year,cut_day的站点数,统计出来的是总站点数
时间: 2024-04-08 17:33:42 浏览: 22
非常抱歉之前的回答有误。如果你想统计"Year"和"cut_day"这两列中的站点数,可以使用以下代码:
```R
df_all1_new <- df_all1 %>%
group_by(Year, cut_day) %>%
summarise(站数 = n_distinct(站点)) %>%
ungroup()
```
在上述代码中,我们使用`group_by()`函数将数据按照"Year"和"cut_day"进行分组。然后,使用`summarise()`函数计算每个组中不重复的站点数量,并将结果命名为"站数"。最后,使用`ungroup()`函数取消分组。
请确保在运行代码之前,已经正确加载了`dplyr`包,并且数据框`df_all1`包含了"Year"、"cut_day"和"站点"这些列。运行代码后,将得到一个新的数据框`df_all1_new`,其中包含了每个组的站点数量信息。
再次对之前的错误表示歉意,谢谢你的理解!
相关问题
优化GZL_sum <- GZL_12 %>% group_by(username) %>% summarise(total_GZL = sum(GZL))
这个代码已经相对比较简洁和优化了,但是如果你想要进一步优化,可以考虑使用 `dplyr` 包中的 `summarise()` 函数的快捷方式 `summarise_at()` 或者 `summarise_all()`。这两个函数可以对指定的列或者所有列应用相同的汇总函数。例如,你可以使用下面的代码完成相同的任务:
```
library(dplyr)
GZL_sum <- GZL_12 %>%
group_by(username) %>%
summarise_at(vars(GZL), sum, na.rm = TRUE, name = "total_GZL")
```
这里的 `summarise_at()` 函数中,`vars(GZL)` 指定了要对哪些变量应用汇总函数,`sum` 表示使用 `sum` 函数计算总和,`na.rm = TRUE` 表示忽略缺失值,`name = "total_GZL"` 表示新的变量名为 `total_GZL`。
GZL_sum <- GZL_12 %>% group_by(username) %>% summarise(total_GZL = sum(GZL))
这条代码表示对 `GZL_12` 数据集按照 `username` 进行分组,然后计算每个用户 `GZL` 列的总和,并将结果保存为一个新的数据集 `GZL_sum`。其中 `%>%` 是管道操作符,它可以将前面一步的结果传递给后面一步作为输入。在这个例子中,`GZL_12` 会作为第一个参数传递给 `group_by()` 函数,然后 `group_by()` 函数的结果会作为第一个参数传递给 `summarise()` 函数。最终的结果是一个新的数据集 `GZL_sum`,其中每一行表示一个用户的总 `GZL` 值。