R 基于该行另一列中的值对列中的值进行操作的更好方法?
我有一个简单的数据框架,由年、月和测量值组成。我想创建一个“规范化”列,它等于将时间戳值除以属于同一个月的所有度量值的平均值。我最终完成了这个循环,但我相信有一个更干净的方法可以用tidyverse的东西来完成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"]
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))