簡體   English   中英

根據該行的另一列中的值對列中的值進行操作的更好方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM