Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于该行另一列中的值对列中的值进行操作的更好方法?_R_Dplyr - Fatal编程技术网

R 基于该行另一列中的值对列中的值进行操作的更好方法?

R 基于该行另一列中的值对列中的值进行操作的更好方法?,r,dplyr,R,Dplyr,我有一个简单的数据框架,由年、月和测量值组成。我想创建一个“规范化”列,它等于将时间戳值除以属于同一个月的所有度量值的平均值。我最终完成了这个循环,但我相信有一个更干净的方法可以用tidyverse的东西来完成 for (i in 1:nrow(my_data)){ my_data[i,"Normalized"] <- my_data[i, "MERRA2"]/ mean_monthly[[my_data[i,"Month"]

我有一个简单的数据框架,由年、月和测量值组成。我想创建一个“规范化”列,它等于将时间戳值除以属于同一个月的所有度量值的平均值。我最终完成了这个循环,但我相信有一个更干净的方法可以用tidyverse的东西来完成

for (i in 1:nrow(my_data)){
  my_data[i,"Normalized"] <- my_data[i, "MERRA2"]/ mean_monthly[[my_data[i,"Month"]]]
}

您可以尝试
dplyr

library(dplyr)

my_data <- my_data %>%
  group_by(Year, Month) %>%
  mutate(Normalized = MERRA2/mean(MERRA2))
库(dplyr)
我的_数据%
分组单位(年、月)%>%
突变(标准化=MERRA2/平均值(MERRA2))

使用dplyr
我创建了一个示例数据集,并使用dplyr库计算了所需的输出

df <- data.frame(Year = rep(2000:2004, each=60),
                 Month= rep(1:12, 5, each=5),
                 MERRA2= 1:300)
df1 <- df %>% group_by(Year, Month) %>% mutate(Normalised = MERRA2/mean(MERRA2))
df%突变(标准化=MERRA2/平均值(MERRA2))
library(dplyr)

my_data <- my_data %>%
  group_by(Year, Month) %>%
  mutate(Normalized = MERRA2/mean(MERRA2))
df <- data.frame(Year = rep(2000:2004, each=60),
                 Month= rep(1:12, 5, each=5),
                 MERRA2= 1:300)
df1 <- df %>% group_by(Year, Month) %>% mutate(Normalised = MERRA2/mean(MERRA2))