2017-10-04 5 views

Répondre

2

attendu Nous pourrions utiliser tidyverse. Diviser le format « Office » par le deimiter et étendre à « long », puis obtenir les distinct lignes, groupées par « IdSession » et « QF », paste le contenu du « Bureau »

library(tidyverse) 
separate_rows(df1, Office) %>% 
     distinct() %>% 
    group_by(sessionid, qf) %>% 
    summarise(Office = toString(Office)) 
# A tibble: 3 x 3 
# Groups: sessionid [?] 
# sessionid qf     Office 
#  <int> <int>     <chr> 
#1  12  3 LON1, LON2, SEA2, SEA3 
#2  12  4  DEL2, DEL1, LON1 
#3  13  5  MAn1, LON1, DEL1 
2

Voici une base de R façon de le faire, il fonctionne comme on pouvait s'y attendre, d'abord diviser office par la virgule, supprimer les doublons, puis coller à nouveau ensemble

df$Office <- sapply(lapply(strsplit(df$Office, ","), 
          function(x) { 
          unique(x) 
          }), 
        function(x) { 
         paste(x, collapse = ",") 
        }, 
        simplify = T) 

ou %>%

df$Office <- df$Office %>% 
    strsplit(",") %>% 
    lapply(function(x){unique(x)}) %>% 
    sapply(function(x){paste(x,collapse = ",")},simplify = T)