r - 分组观察和计算 Z 分数
问题描述
我目前正在研究一个气候数据集,并且有两个我无法解决的主要问题。
数据 = https://ufile.io/u2dszh4x
有没有办法在其对应列之前融化季节字段,以便它产生类似https://imgur.com/dF3gNY0我想在名为“grow”的季节列中生成一个新类,其中包含总和ppt 以及春季和夏季月份的所有其他参数的平均值。我最初试图将 prism_grouped 与一年的列和其他列和个人观察,即(spring_ppt_mm,summer_ppt_mm,fall_ppt_mm,winter_ppt_mm,...)并使用 mutate 从那里计算它,但融化和收集数据总是让我很不稳定结果。
在尝试计算每个季节的 z 分数时,当我使用这种方法时,我会在输出数据库中填充 NaN:
弹簧 <- prism_grouped %>%
过滤器(季节==“春天”)%>%
变异(z_ppt_mm = 比例(ppt_mm))%>%
变异(z_tmin_c = 比例(tmin_c))%>%
变异(z_tmean_c = 比例(tmean_c))%>%
变异(z_tmax_c = 比例(tmax_c))%>%
变异(z_vdpmin_hpa = 比例(vdpmin_hpa))%>%
变异(z_vdpmax_hpa = 规模(vdpmax_hpa))
但如果我执行以下操作会得到有效的结果:
spring <- filter(prism_grouped,season == "spring")
z_spr_ppt <- scale(spring$ppt_mm)
z_spr_tmin <- scale(spring$tmin_c)
z_spr_tmean <- scale(spring$tmean_c)
z_spr_tmax <- scale(spring$tmax_c)
z_spr_vdpmin <- scale(spring$vdpmin_hpa)
z_spr_vdpmax <- scale(spring$vdpmax_hpa)
我目前可以使用第二种方法,但我正在尝试减少我正在使用的变量的数量,并且更愿意将它们包含在数据框中。任何建议,将不胜感激!
解决方案
我不明白第一个问题,但对于第二个问题,您可以使用across
(或mutate_at
在 old 中dplyr
)将相同的功能应用于多个列。就像是 :
library(dplyr)
spring <- prism_grouped %>%
ungroup %>%
filter(season == "spring") %>%
mutate(across(ppt_mm:vdpmax_hpa, ~as.numeric(scale(.)), .names = 'z_{col}'))
推荐阅读
- hive - 是否可以在 hive 中更新复杂的数据类型?例如:映射、数组、结构
- visual-studio - 使用 MS VS15 2017 编译 OpenCV 3.4 和 Cuda 9.2
- c++ - C++ 窗口捕获输出与所述窗口的大小不同
- python - 循环 clump_masked 索引
- flexbox - Ag-Grid 在 flexbox 布局中的高度为零
- websocket - 在 glassfish 上设置服务器缓冲区大小
- html - AngularJS 控制器在设置后重置 $scope 变量
- c# - 选择图像时 Xamarin Android 应用程序变慢/崩溃
- c# - 在 C# 中解析日期/时间的最松散方式?
- javascript - 在数组值之间的范围内发生某些行为?