J'avais un fichier csv avec 10 000 lignes et 2 colonnes, 1ère colonne avec des noms, 2ème colonne avec des valeurs de journal. Je voudrais ajouter un mot-clé ("rouge") pour les valeurs négatives du journal. pour positif -> "données" Pouvez-vous quelques suggestions s'il vous plaît!
Example- names log group 571008 -0.2153296 red 571008 -0.2153296 red 00333657 -0.2155359 red 567501 0.2196503 data 321750 0.2200974 data 568683 -0.2221536 red
3 Réponses :
Nous pouvons utiliser ifelse pour créer une nouvelle colonne (au lieu d'ajouter une chaîne à une classe numérique - car il convertit la classe en caractère )
df1 <- structure(list(names = c(571008L, 571008L, 333657L, 567501L, 321750L, 568683L), log = c(-0.2153296, -0.2153296, -0.2155359, 0.2196503, 0.2200974, -0.2221536)), row.names = c(NA, -6L), class = "data.frame")
Une approche d'index logique:
#Data Data <- structure(list(names = c(571008L, 571008L, 333657L, 567501L, 321750L, 568683L), log = c(-0.2153296, -0.2153296, -0.2155359, 0.2196503, 0.2200974, -0.2221536)), row.names = c(NA, -6L), class = "data.frame") #Create index index <- Data$log<0 #Assign Data$Flag<-'data' Data$Flag[index]<-'red' names log Flag 1 571008 -0.2153296 red 2 571008 -0.2153296 red 3 333657 -0.2155359 red 4 567501 0.2196503 data 5 321750 0.2200974 data 6 568683 -0.2221536 red
HI Duck, belle explication. Puis-je savoir ce que signifie "row.names = c (NA, -6L)"?
@park Salut mon cher, row.names = c (NA, -6L) est juste l'index interne que toutes les dataframes ont à l'intérieur de R . Il est typique de le voir lorsque vous dput () n'importe quelle dataframe. J'espère que cela a aidé.
Vous pouvez utiliser des valeurs logiques pour sous-ensemble et attribuer.
df$group <- c('data', 'red')[(df$log < 0) + 1]
df
# names log group
#1 571008 -0.2153296 red
#2 571008 -0.2153296 red
#3 333657 -0.2155359 red
#4 567501 0.2196503 data
#5 321750 0.2200974 data
#6 568683 -0.2221536 red