Sorry als dit een duplicaat is, maar ik kan de informatie nergens anders op vinden, ook al lijkt het zoiets een eenvoudig probleem. Ik heb een gegevensframe met verschillende kolommen als factoren. Sommige van dat zijn gehele getallen en sommige zijn snaren. Ik zou graag de rijen willen extraheren die overeenkomen met een bepaalde factor. Bijvoorbeeld,
my_data <- read.table(file = "my_data.txt", header = TRUE)
my_data[ my_data$age == 20, ]
Dit werkt, maar als ik dan
probeer
my_data[ my_data$gender == "male", ]
Dit produceert geen overeenkomsten. Ik besefte dat ze niet hetzelfde zijn, als het controleren van de klasse van my_data$name[1]
geeft factor, terwijl ik het tegen een string controleer.
Alle ideeën Wat doe ik hier verkeerd?
Cheers
Gegevenssample:
Grootte leeftijd genderwaarde
1 20 man 0,5
4 22 vrouw 0.7
3 14 vrouw 0.3
Antwoord 1, Autoriteit 100%
Probeer de subset
te gebruiken.
Deze site biedt een goede referentie:
HOWTOINR
my_data = subset(my_data, gender == "male")
Antwoord 2, Autoriteit 30%
Dit is een antwoord op een oude vraag, maar ik wil graag mijn huidige manier delen om dingen te doen waar fouten zoals deze veel minder gebeurt.
Het antwoord is de data.table
pakket. Het heeft me honderden regels code opgeslagen en zal dit blijven doen. Subsiting wordt een fluitje van een cent:
my_data <- data.table(my_data)
my_data[gender == "male" & age <= 20]
Ik kan zoveel conditionals gebruiken als ik wil, en ook .SD
gebruiken om kolommen als argumenten door te geven aan functies, zoals:
my_data[gender == "male" & age <= 20, lapply(.SD, mean), by = c("nationality", "height")]
Het maken van kolommen op basis van bestaande kolommen is veel eenvoudiger, zelfs meerdere kolommen tegelijk maken