某些行在R中具有2个约束的总和

问题描述 投票:1回答:1

我正在尝试编写具有以下约束的条件语句。下面是一个示例数据框,显示了我遇到的问题。

Row <- c(1,2,3,4,5,6,7)
La <- c(51.25,51.25,51.75,53.25,53.25,54.25,54.25)
Lo <- c(128.25,127.75,127.25,119.75,119.25,118.75,118.25)
Y <- c(5,10,2,4,5,7,9)
Cl <- c("EF","EF","EF","EF","NA","NA","CE")     

d <- data.frame(Row,La,Lo,Y,Cl)

  Row    La     Lo  Y Cl
1   1 51.25 128.25  5 EF
2   2 51.25 127.75 10 EF
3   3 51.75 127.25  2 EF
4   4 53.25 119.75  4 EF
5   5 53.25 119.25  5 NA
6   6 54.25 118.75  7 NA
7   7 55.25 118.25  9 CE

如果“ Cl”为NA,且对应的“ Lo”值接近(等于或小于1.00),则“ [我想对列“ Y”求和(从该行中删除所有值) )。实际上,我想从数据帧中删除NA而不丢失“ Y”的值,而是将此值添加到与其最接近的邻居。我希望返回数据框看起来像这样:

Row2 <- c(1,2,3,4,7) La2 <- c(51.25,51.25,51.75,53.25,55.25) Lo2 <- c(128.25,127.75,127.25,119.75,118.25) Y2 <- c(5,10,2,9,16) Cl2 <- c("EF","EF","EF","EF","CE") d2 <- data.frame(Row2,La2,Lo2,Y2,Cl2) Row2 La2 Lo2 Y2 Cl2 1 1 51.25 128.25 5 EF 2 2 51.25 127.75 10 EF 3 3 51.75 127.25 2 EF 4 4 53.25 119.75 9 EF 5 7 55.25 118.25 16 CE

最近编辑:

如果NA行在Lo值上接近一行,并且在La值上与另一行相同,则按La值联接。如果有2个Lo和La值相等接近的行,请以较小的La值合并。谢谢您的帮助!

我正在尝试编写具有以下约束的条件语句。下面是一个示例数据框,显示了我遇到的问题。行

r conditional-statements
1个回答
0
投票
如果您可以为数据中所有(La,Lo)行之间的距离建立一些距离矩阵m,则可以使用这种方法。我使用dist的输出,这是欧几里德距离。选择距离最小的行,或者如果距离最小的行被> 1行共享,则选择最早的行。
© www.soinside.com 2019 - 2024. All rights reserved.