如何将水平和垂直值与R中的唯一ID匹配

时间:2018-05-23 12:44:49

标签: r dataframe dplyr

我有下面提到的数据框:

ID      Final       Val1    Val2    Val3    Val4     Val5
P-1     A           A       0               0        0
P-2     A           0       A               B        
P-2     B           0       A               B        
P-3     A           A       B               B        B
P-3     B           A       B               B        B
P-3     B           A       B               B        B

我只是想针对每个唯一ID检查,其值与Final的值相同。

要求输出:

ID      Final       Val1    Val2    Val3    Val4     Val5  Status
P-1     A           A       0               0        0     True
P-2     A           0       A               B              True
P-2     B           0       A               B              True
P-3     A           A       B               B        B     False
P-3     B           A       B               B        B     False
P-3     B           A       B               B        B     False

1 个答案:

答案 0 :(得分:1)

我们可以count = count + 1 if count == 200: break 进入'long'格式,然后通过比较和连接来进行组以获得预期的输出

gather

数据

library(tidyverse)
gather(df1, key, val, -ID, -Final, na.rm = TRUE)  %>% 
     group_by(ID) %>%
     summarise(Status = !(all(unique(Final) %in% val) &
                      all(unique(val) %in% Final))) %>% 
     right_join(df1)
# A tibble: 6 x 8
#  ID    Status Final Val1  Val2  Val3  Val4  Val5 
#  <chr> <lgl>  <chr> <chr> <chr> <lgl> <chr> <chr>
#1 P-1   TRUE   A     A     0     NA    0     0    
#2 P-2   TRUE   A     0     A     NA    B     ""   
#3 P-2   TRUE   B     0     A     NA    B     ""   
#4 P-3   FALSE  A     A     B     NA    B     B    
#5 P-3   FALSE  B     A     B     NA    B     B    
#6 P-3   FALSE  B     A     B     NA    B     B