Comment diviser une chaîne en deux éléments différents dans R?
Question
J'ai une corde comme
c <- "Gary INMetro Chicago IL Metro"
Je fais
d <- strsplit(c,"Metro")
obtenir
> d[1]
[[1]]
[1] "Gary IN" " Chicago IL "
Mais je veux deux éléments différents et je veux écrire dans le fichier CSV comme
City,State
Gary,IN
Chicago,IL
Comment faire ça?Toute aide est appréciée.
La solution
Essayez ceci:
read.table(text=gsub('Metro', '\n', c), col.names=c('City', 'State'))
# City State
# 1 Gary IN
# 2 Chicago IL
Autres conseils
première étape est pour casser la strpsplit
d <- unlist(strsplit(c,"Metro"))
Vous obtenez donc des vecteurs à ligne unique.
[1] "Gary IN" " Chicago IL "
Deuxièmement, vous devez itérrer sur les vecteurs et couper vos cordes.
trim <- function (x) gsub("^\\s+|\\s+$", "", x)
for(i in 1:length(d)) { print(trim(d[i])) }
[1] "Gary IN"
[1] "Chicago IL"
Troisième, vous devez construire un fichier de données (code complet)
# Function to trim the fields
trim <- function(x) { gsub("^\\s+|\\s+$", "", x) }
# Dataset
c <- "Gary INMetro Chicago IL Metro"
# Split text rows
d <- unlist(strsplit(c,"Metro"))
# Build an empty frame
frame <- data.frame()
# Split columns and collect the rows
for(i in (1:length(d)) ) {
# Split columns
r <- unlist(strsplit(trim(d[i])," "))
# Collect rows
frame[i,1] <- r[1];
frame[i,2] <- r[2];
}
# Set table names
names(frame) <- c("City","State");
résultat
City State
1 Gary IN
2 Chicago IL
au moins le stocker
write.csv (image, "test.frm");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow