[英]Better way to operate on a value in a column based on the value in another column of that row?
我有一個由年、月和測量值組成的簡單數據框。 我想創建一個“標准化”列,等於將該時間戳值除以屬於同一月份的所有測量值的平均值。 我結束了這個循環,但我確信有一種更清潔的方法可以使用 tidyverse 中的一些東西來完成它
for (i in 1:nrow(my_data)){
my_data[i,"Normalized"] <- my_data[i, "MERRA2"]/ mean_monthly[[my_data[i,"Month"]]]
}
mean_monthly 在哪里
mean_monthly <- apply(merra2_data[,2:13], 2, mean, na.rm=T)
dataframe的頭
Year Month MERRA2 Normalized
1 2000 1 7.217474 1.0267520
2 2000 2 7.700417 1.0625818
3 2000 3 8.004980 1.0532328
4 2000 4 7.994653 0.9930986
5 2000 5 8.317802 1.1213321
6 2000 6 6.734449 0.9501416
使用dplyr 。
我創建了一個示例數據集並使用dplyr庫計算了所需的 output
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))
您可以嘗試dplyr
:
library(dplyr)
my_data <- my_data %>%
group_by(Year, Month) %>%
mutate(Normalized = MERRA2/mean(MERRA2))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.