Ho un dataframe:gruppi Assegnazione utilizzando Grepl con più ingressi
df <- data.frame(name=c("john", "david", "callum", "joanna", "allison", "slocum", "lisa"), id=1:7)
df
name id
1 john 1
2 david 2
3 callum 3
4 joanna 4
5 allison 5
6 slocum 6
7 lisa 7
Ho un vettore contenente regex che desidero di trovare nella variabile df nome $:
vec <- c("lis", "^jo", "um$")
L'uscita I vuole ottenere è la seguente:
name id group
1 john 1 2
2 david 2 NA
3 callum 3 3
4 joanna 4 2
5 allison 5 1
6 slocum 6 3
7 lisa 7 1
ho potuto fare questo nel modo seguente:
df$group <- ifelse(grepl("lis", df$name), 1,
ifelse(grepl("^jo", df$name), 2,
ifelse(grepl("um$", df$name), 3,
NA)
Tuttavia, voglio farlo direttamente da "vec". Sto generando diversi valori in vec in modo reattivo in un'app lucida. Posso assegnare gruppi basati su indice in vec?
Inoltre, se succede qualcosa di simile a quanto segue, il gruppo dovrebbe essere il primo che appare. per esempio. 'Callum' è TRUE per 'all' e 'um $' ma dovrebbe ottenere un gruppo 1 qui.
vec <- c("all", "^jo", "um$")
Come si vuole affrontare con la possibilità di molteplici modelli che corrispondono a un determinato nome? –
Dovrebbero avere il primo indice per cui sono VERO. Ad esempio, Callum dovrebbe essere 1 come 'all' è in vec prima 'um $' – jalapic
Qualcosa come 'apply (df, 1, function (row) che (sapply (vec, function (regex) grepl (regex, row [1 ])))) 'dovrebbe iniziare. Passa attraverso il frame di dati riga per riga e per ogni elemento controlla quali espressioni regolari corrispondono. Sono interessato a vedere quello che gli altri inventano però. – brittenb