Ceci est une tâche simple dans R, mais il semble qu'il y ait un malentendu de ma part. Toute aide est appréciée clarification:Transposer et concaténer R data.tables
J'ai la data.table R suivante d'un seul fichier texte:
dat = as.data.table(fread(...))
type proportion
1: type_3 0.5570502431
2: type_5 0.1108589951
3: type_1 0.0688816856
4: type_9 0.0601296596
5: type_8 0.0554294976
6: type_12 0.0450567261
7: type_2 0.0322528363
8: type_4 0.0202593193
9: type_7 0.0166936791
10: type_6 0.0145867099
11: type_10 0.0141004862
12: type_11 0.0040518639
Il y a environ. 500 de ces fichiers texte, dont je peux lire chacun un R data.table
et mettre dans une liste R. C'est assez simple en principe:
list_of_data.tables = list(dat1, dat2, dat3, ...)
concat = do.call("rbind", list_of_data.tables)
Ce n'est pas le format que je voudrais. Je voudrais prendre la colonne type
comme l'en-tête de la finale data.table concaténés, type_1
, type_2
, type_3
, etc. Ensuite, chaque ligne de la data.table concaténé finale serait la colonne porportion
pour dat1
, etc.
Voici le format du data.table concaténés final:
type_1 type_2 type_3 type_4 type_5 type_6 ...
dat1 0.557 0.110 0.068 0.0601 0.0554 0.045 ...
dat2 0.23 0.324 0.12 0.0723 0.002 0.004 ...
...
Ma première pensée serait de transposer la data.table originale avec t()
, mais cela ne fait pas type
l'en-tête. En outre, je ne suis pas sûr comment étiqueter chaque rangée par dat1
, etc.
Quelle est la bonne façon de faire une chose si simple?
Side note: 'fread' explique qu'il renvoie un data.table, pas besoin de contraindre. De plus, '? Rbind' explique que vous pouvez utiliser' rbindlist' au lieu de 'do.call'. – Frank
Merci pour ça, je ne le savais pas! – ShanZhengYang