从分析中找出最接近的值及其差值

2024-09-30 20:25:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据表,其中有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

最好是我想打印出这样的内容(打印X中距离A变量最近的变量的距离):

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

也许是因为今天是复活节,我的大脑只有一半的容量,但我想不出一个简单而自动的方法来处理这个问题。对不起,如果这个问题以前已经解决了,我在网页上找不到答案。你知道吗

我对Linux中的R和shell脚本相当熟悉,如果有人愿意帮助我的话,我也可以尝试用python脚本来解决这个问题。你知道吗


Tags: 方法答案脚本网页距离内容linux数组
2条回答

如果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))])))

结果将是一个数据帧列表,每个数据帧对应一列df

我想你在找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
}

相关问题 更多 >