J'ai un data.frame comme ceci: 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: p> la colonne "nom" est rownames de mydf. De plus, j'ai totalement 10 000 lignes et 45 colonnes. P> sortie souhaitée: p> 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. P> Merci d'avance p> p> P>
5 Réponses :
Est-ce que vous voulez?
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 code>
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
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
Voici une approche vectorisée avec base r code> référence h3>
données h3>
Vous pouvez simplement le faire en utilisant data.Table.table code> package-
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) code>0,1 égal à 0,10 ?!