0
votes

Boucle sur les colonnes d'une donnée.frame pour appliquer une condition

J'ai un data.frame comme ceci: xxx

pour chaque colonne "valeur *" Je voudrais, le nom correspondant à la valeur 0.10. En d'autres termes, la sortie sera une donnée de trois colonnes contenant des éléments du "nom". J'ai commencé avec l'idée de cbind le "nom" à chaque colonne "Value *" pour ensuite sous-ensemble, mais sans succès: xxx

la colonne "nom" est rownames de mydf. De plus, j'ai totalement 10 000 lignes et 45 colonnes.

sortie souhaitée: xxx

Peut-on m'aider s'il vous plaît? Je sais qu'il y a une fonction "Appliquer" probablement capable de faire le travail, mais je forçais à apprendre à utiliser pour les boucles.

Merci d'avance


3 commentaires

Pouvez-vous publier votre sortie souhaitée?


J'accueille sur le commentaire précédent, et vous pouvez ajouter les noms de ligne comme une nouvelle colonne comme celle-ci: mydf $ nom_col <- rownames (mydf)


0,1 égal à 0,10 ?!


5 Réponses :


3
votes

Est-ce que vous voulez? XXX


4 commentaires

Pourquoi pas c et d?


Oui c'est le cas! Nelson pas c / d parce que l'exigence n'est pas> 0,10 mais égale


Cela signifie 0,1! = 0.10 alors!


@Nelsongon c'est ce que je pensais et c'est pourquoi j'ai traité la valeur que caractère



2
votes

avec base R PAPLLY code>

cols <- grep("^value", names(df))
df[cols] <- lapply(df[cols], function(x) ifelse(x == 0.1, df$name, NA))


df
#  name value1 value2 value3
#1    a      a   <NA>      a
#2    b   <NA>   <NA>   <NA>
#3    c   <NA>      c      c
#4    d   <NA>      d   <NA>
#5    e      e   <NA>      e


0 commentaires

2
votes

Voici une alternative utilisant A pour boucle

  name value1 value2 value3
1    a      a   <NA>      a
2    b   <NA>   <NA>   <NA>
3    c   <NA>      c      c
4    d   <NA>      d   <NA>
5    e      e   <NA>      e


0 commentaires

0
votes

Voici une approche vectorisée avec base r xxx

référence xxx

données xxx


0 commentaires

0
votes

Vous pouvez simplement le faire en utilisant data.Table.table package- xxx


0 commentaires