首页 > 解决方案 > 将具有匹配和不匹配数字的行与附加列关联相结合

问题描述

X1 Y2 X3 Y4  
2  50 2  60
2  43 3  55 
4  80 5  34
5  30 5  59 
6  69 5  87
6  56 6  85
      8  22
      9  25 

我有 4 列 x 作为质量值(十进制)和 y 作为强度(十进制)作为不相等的列对,我想将相似的质量值 (x) 与最高强度 (y) 和不匹配的质量 (x) 组合为零。

X1 Y2 X3 Y4  
2  50 2  60
3  00 3  55 
4  80 4  00
5  30 5  87 
6  69 6  85
8  00 8  22
9  00 9  25 

我该如何做手术?任何帮助将不胜感激。

标签: r

解决方案


这有点混乱,但完成了预期的工作。

   library(dplyr)
    
   a <- na.omit(table[,1:2]) %>% group_by(X1) %>% summarize(Y2=max(Y2)) 
   b <- na.omit(table[,3:4]) %>% group_by(X3) %>% summarize(Y4=max(Y4)) 
        
   out <- merge(a,b,by.x="X1",by.y="X3",all=T)
   out[is.na(out)] <- 0
   out

给,

  X1 Y2 Y4
1  2 50 60
2  3  0 55
3  4 80  0
4  5 30 87
5  6 69 85
6  8  0 22
7  9  0 25

数据:

table <-structure(list(X1 = c(2L, 2L, 4L, 5L, 6L, 6L, NA, NA), Y2 = c(50L, 
    43L, 80L, 30L, 69L, 56L, NA, NA), X3 = c(2L, 3L, 5L, 5L, 5L, 
    6L, 8L, 9L), Y4 = c(60L, 55L, 34L, 59L, 87L, 85L, 22L, 25L)), class = "data.frame", row.names = c(NA, 
    -8L))

推荐阅读