找到最接近的值及其与测定的差异

时间:2018-03-28 11:39:57

标签: python arrays r linux shell

我有一个数据表,其中包含A,B,C各个值:

A      B        C
72764   115226  115364
74169   115387  119997
74770   120084  121022
77114   133818  103949

我希望在X,Y,Z(+50多个变量)数组中找到每个值的最接近值和/或最接近的值:

X       Y       Z
84213   45661   111351
114406  114580  114580
114491  114825  114825
114880  NA      114876

我最好打印出这样的东西(打印到A变量中最接近变量的距离):

A_X     A_Y
11449   -27103
10044   -28508
9443    -29109
7099    -31453

也许是因为它是复活节,而我的大脑处于一半的容量,但我无法找到一种简单而自动的方法来处理这个问题。很抱歉,如果之前已经解决了这个问题,我在网页上找不到答案。

我对Linux中的R和shell脚本非常熟悉,我猜我也可以尝试使用python脚本解决它,如果有人愿意帮助我的话。

2 个答案:

答案 0 :(得分:0)

我认为你正在寻找combn功能。循环和自动化将类似于

pairs = combn(ncol(df2),ncol(df1))
for(i in 1:ncol(pairs)){
    column1 = df1[,pairs[1,i]]
    column2 = df2[,pairs[2,i]]
    #Do your difference/closest value calculations and store in results
}

答案 1 :(得分:0)

如果muteRemoteData.then( data => htmlDiv.innerHtml = data) 是您的第一个数据帧,而df是您的第二个数据帧,那么您可以执行以下操作...

df2

据推测,您需要重复sapply(df2,function(v) sapply(df$A,function(x) (v-x)[which.min(abs(x-v))])) X Y Z [1,] 11449 -27103 38587 [2,] 10044 -28508 37182 [3,] 9443 -29109 36581 [4,] 7099 -31453 34237 的所有列,这类似

df

结果将是一个数据框列表,每列lapply(df, function(z) sapply(df2, function(v) sapply(z, function(x) (v-x)[which.min(abs(x-v))])))

一个
相关问题