J'ai très grand data.table
que je veux réduire la voilure de cette façon:tri conditionnel dans le tableau de données
- Un seul identifiant unique
- S'il y a d'autres données que « X » dans le même journal , cet autre devrait rester
- Si seulement X, le premier X doit rester
- S'il y a plus d'un autre que « X », tous ceux-ci devraient rester, séparés par des virgules, mais pas le « X ».
ensemble de données de l'échantillon:
library(data.table)
dt <- data.table(
id=c(1,1,2,3,3,4,4,4,5,5),
log=c(11,11,11,12,12,12,12,12,13,13),
art=c("X", "Y", "X", "X", "X", "Z", "X", "Y","X", "X")
)
dt
id log art
1: 1 11 X
2: 1 11 Y
3: 2 11 X
4: 3 12 X
5: 3 12 X
6: 4 12 Z
7: 4 12 X
8: 4 12 Y
9: 5 13 X
10: 5 13 X
sortie requis:
id log art
1 11 Y
2 11 Y
3 12 Z,Y
4 12 Z,Y
5 13 X
id = 3 et log = 12 ne contient pas '' Z' ou Y', Pourtant, il est dans votre sortie attendue. Aussi pourriez-vous s'il vous plaît formater votre code? – mtoto
Eh bien, peut-être que ce n'était pas tout à fait clair - s'il n'y a qu'un Y dans le journal 12, tous les journaux 12 devraient être Y. –