J'essaie d'écrire une sorte de fonction de boucle qui me permettra d'appliquer le même ensemble de code à des dizaines de trames de données qui sont stockées dans une liste. Chaque trame de données a le même nombre de colonnes et d'en-têtes identiques pour chaque colonne, bien que le nombre de lignes varie d'une trame de données à l'autre.Modifier les données stockées dans une liste
Ces données proviennent d'une étude de réseau social égocentrique où j'ai recueilli des données de réseau ego dans le format edgelist de dizaines de répondants différents. Le logiciel de collecte de données que j'utilise stocke les données de chaque interview dans son propre fichier .csv. Voici une image des données brutes pour une trame de données spécifique (image of raw data). Pour mes besoins, j'ai seulement besoin d'utiliser les données des quatrième, sixième et septième colonnes. En outre, j'ai seulement besoin de lignes de données où la dernière colonne a des valeurs de 4, à quel point la dernière colonne peut être entièrement supprimée. Le résultat final est un cadre de données à deux colonnes qui représente les relations entre des paires de personnes.
Après la lecture des données et le stocker sous forme d'un objet, je courus le code suivant:
x100291 = `100291AlterPair.csv` #new object based on raw data
foc.altername = x100291$Alter.1.Name
altername = x100291$Alter.2.Name
tievalue = x100291$AlterPair_B
tie = tievalue
tie[(tie<4)] = NA
egonet.name = data.frame(foc.altername, altername, tievalue)
depleted.name = cbind(tie,egonet.name)
depleted.name = depleted.name[is.na(depleted.name[,1]) == F,]
dep.ego.name = data.frame(depleted.name$foc.altername, depleted.name$altername)
Ceci a produit la trame de données suivante (image of final data). C'est finalement ce que je veux. Maintenant, je sais que je pourrais couper et coller ce même jeu de code 100 fois et modifier manuellement les noms de fichiers, mais je préférerais ne pas le faire. Au lieu de cela, j'ai stocké tous mes fichiers .csv bruts comme des trames de données dans une seule liste. Je suspecte que je peux appliquer le même code à travers tous les cadres de données en utilisant l'une des commandes apply
, mais je ne peux pas le comprendre.
Est-ce que quelqu'un a des suggestions sur la façon dont je pourrais appliquer ce code de base à une liste de trames de données pour que je finisse avec une nouvelle liste contenant les versions nettoyées et réduites des données?
Merci beaucoup!
Si les noms de colonne sont identiques pour toutes les données. cadres que vous pourriez faire 'processList = lapply (fileList, fonction (x) fn_CustomFunc (DF = x))' où vous définissez 'fn_CustomFunc' une fonction personnalisée qui gère tout le traitement des données et utilise' rbind' pour combiner la sortie de toutes les données.frames – OdeToMyFiddle