Bonjour,

Pour chaque couleur (A,B,C,D,E,F,G) correspond à une ou plusieurs catégories en même temps (1,2,3,4) dépendant de l'échantillon. Pour chaque catégories en même temps, il y a une séparation en virgule.



Je souhaite simplifier mes données pour avoir un tableau, en comptabilisant comme suit :


A B C D E F G

1 1 0 0 0 0 0 0
1,2 0 1 0 0 0 0 2


à
A B C D E F G

1 1 0 0 0 0 0 0
1 0 0.5 0 0 0 0 1
2 0 0.5 0 0 0 0 1

et finalement avoir

A B C D E F G

1 1 0.5 0 0 0 0 1
2 0 0.5 0 0 0 0 1
J'ai le script suivant , mais il duplique les lignes pour chaque catégorie, mais je n'arrive pas à diviser sur le nombre de ligne dupliqué :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
DF <- read.table(text = " Color         Cat
 
    A             1
    B             1   
    C             4,2
    D             1,3
    E             1,2
    F             3
    G             5
    A             2
    B             3   
    C             1,2
    D             4,3
    E             3
    F             1
    G             1" , header = TRUE)
 
    DF = table(DF$Cat,DF$Color)
    cats <- strsplit(rownames(DF), ",", fixed = TRUE)
    DF <- DF[rep(seq_len(nrow(DF)), sapply(cats, length)),]
    DF <- as.data.frame(unclass(DF))
 
    DF$cat <- unlist(cats)
    DF <- aggregate(. ~ cat, DF, FUN = sum)

Je vous remercie pour votre aide.