1
votes

Comment attribuer un "mot-clé" aux valeurs commençant par un nombre négatif pour une colonne dans R?

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


0 commentaires

3 Réponses :


1
votes

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")


0 commentaires

1
votes

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


2 commentaires

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é.



1
votes

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


0 commentaires