我正在尝试编写具有以下约束的条件语句。下面是一个示例数据框,显示了我遇到的问题。
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值合并。谢谢您的帮助!最近编辑:
我正在尝试编写具有以下约束的条件语句。下面是一个示例数据框,显示了我遇到的问题。行
m
,则可以使用这种方法。我使用dist
的输出,这是欧几里德距离。选择距离最小的行,或者如果距离最小的行被> 1行共享,则选择最早的行。