Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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_Function_Loops_With Statement - Fatal编程技术网

如何使用R中的选定单元格计算值

如何使用R中的选定单元格计算值,r,function,loops,with-statement,R,Function,Loops,With Statement,我试图根据给定场地40 km半径范围内的预测温度,计算选定场地的反向距离加权温度值。我已经确定了从每个预计位置到每个现场的预计位置和距离。如果有人能帮助我在R中完成这项工作,我将不胜感激,因为我有大量的文件要做,手动完成这项工作需要很长时间。我的示例数据集如下所示 +----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+ | Proj_Loc

我试图根据给定场地40 km半径范围内的预测温度,计算选定场地的反向距离加权温度值。我已经确定了从每个预计位置到每个现场的预计位置和距离。如果有人能帮助我在R中完成这项工作,我将不胜感激,因为我有大量的文件要做,手动完成这项工作需要很长时间。我的示例数据集如下所示

+----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+ | Proj_Loc | 2026_1 | 2026_2 | 2026_3 | 2026_4 | site_1 | site_2 | site_3 | site_4 | site_5 | +----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+ | P_129 | 24.46 | 25.2 | 26.54 | 28.49 | 39.96 | | | | | | P_130 | 21.08 | 21.96 | 23.6 | 25.95 | | 20.243 | | | | | P_131 | 25.2 | 25.99 | 27.2 | 29.07 | | 17.679 | | | | | P_136 | 21.95 | 22.65 | 24.23 | 26.27 | 11.375 | | 21.988 | | | | P_137 | 16.02 | 16.92 | 19.08 | 21.8 | 24.922 | 29.99 | 17.613 | 34.637 | 33.041 | +----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
首先重塑形状,然后取加权平均值

library(dplyr)
library(tidyr)

df <- gather(dat,key = sitename,value = siteval,site_1:site_5,na.rm = T)

df <- df %>%
    group_by(sitename) %>%
    summarize_each(funs(weighted.mean(.,siteval^-1,na.rm = T)),X2026_1:X2026_4)
库(dplyr)
图书馆(tidyr)
df%
各汇总(funs(加权平均值(,siteval^-1,na.rm=T)),X2026\u 1:X2026\u 4)

a让我们获得两个子数据帧在每个分辨率下的站点距离和温度

dat0 = dat[2:5]
dat1= dat[6:10]
做场地距离的倒数,因为我们处理的是1/距离值

dat1=1/dat1
让我们对dat1进行转置

dat1=t(dat1)
现在,如果您注意到,您想要的数据帧只是dat1和dat0的矩阵乘法除以dat1的行和

dat1=data.matrix(dat1)
dat0=data.matrix(dat0)

dat1[is.na(dat1)] = 0
outputDat = (dat1 %*% dat0)/rowSums(dat1)

你自己尝试过什么代码?@MatthewLundberg这个问题显然没有对R中的用户部分进行任何尝试。我觉得在这种情况下,这仍然是一个不错的问题,你在暗示什么吗?@zacdav我的意思是,“你尝试过什么”通常不是一个有用的评论。我被卡住了,非常感谢你的帮助。这三个答案都有效。
dat1=1/dat1
dat1=t(dat1)
dat1=data.matrix(dat1)
dat0=data.matrix(dat0)

dat1[is.na(dat1)] = 0
outputDat = (dat1 %*% dat0)/rowSums(dat1)