【发布时间】:2020-09-19 20:27:47
【问题描述】:
我有一个 CSV 文件,其中包含 19 列和 9 行关于雨量计和它们的坐标 (LongLat) 的平均降雨月份。列是平均值,线条是雨量计。 CSV 文件可在此处访问:https://drive.google.com/file/d/1wGVT5etZomYW-Cb6R3KgHaV4mXrTjlu4/view?usp=sharing
目的是创建更多的列,以应用平均列的公式按月份计算降雨因子。 每个雨量计(9 行)的 1 月份降雨因子将使用第 7 列计算,降雨量为2 月使用第 8 列,3 月使用第 9 列...
我正在为每一列尝试这段代码,它可以工作,但是这段代码可以通过循环减少和制作吗?
library(tidyverse)
setwd("C:/scriptsr/R_postos_pluviometricos_interp_FUNCEME/")
#Code
pluviometros <- read.csv("postos_fatorR.csv",
header = T,
sep = ",",
stringsAsFactors = FALSE)
View(pluviometros)
pluviometros <- mutate(.data=pluviometros,R.JAN=67.355*((pluviometros[1:nrow(pluviometros),7]^2)/pluviometros[1:nrow(pluviometros),19])^0.85,
R.FEV=67.355*((pluviometros[1:nrow(pluviometros),8]^2)/pluviometros[1:nrow(pluviometros),19])^0.85,
R.MAR=67.355*((pluviometros[1:nrow(pluviometros),9]^2)/pluviometros[1:nrow(pluviometros),19])^0.85,
R.APR=67.355*((pluviometros[1:nrow(pluviometros),10]^2)/pluviometros[1:nrow(pluviometros),19])^0.85,
R.MAY=67.355*((pluviometros[1:nrow(pluviometros),11]^2)/pluviometros[1:nrow(pluviometros),19])^0.85,
R.JUN=67.355*((pluviometros[1:nrow(pluviometros),12]^2)/pluviometros[1:nrow(pluviometros),19])^0.85,
R.JUL=67.355*((pluviometros[1:nrow(pluviometros),13]^2)/pluviometros[1:nrow(pluviometros),19])^0.85,
R.AGO=67.355*((pluviometros[1:nrow(pluviometros),14]^2)/pluviometros[1:nrow(pluviometros),19])^0.85,
R.SEP=67.355*((pluviometros[1:nrow(pluviometros),15]^2)/pluviometros[1:nrow(pluviometros),19])^0.85,
R.OCT=67.355*((pluviometros[1:nrow(pluviometros),16]^2)/pluviometros[1:nrow(pluviometros),19])^0.85,
R.NOV=67.355*((pluviometros[1:nrow(pluviometros),17]^2)/pluviometros[1:nrow(pluviometros),19])^0.85,
R.DEC=67.355*((pluviometros[1:nrow(pluviometros),18]^2)/pluviometros[1:nrow(pluviometros),19])^0.85
)
View(pluviometros)
【问题讨论】:
标签: r loops dataframe tidyverse dplyr