Как разделить строку на два разных элемента в R?

StackOverflow https://stackoverflow.com//questions/22026688

  •  21-12-2019
  •  | 
  •  

Вопрос

У меня есть строка, такая как

c <- "Gary INMetro Chicago IL Metro"
.

Я делаю

d <- strsplit(c,"Metro")
.

Чтобы получить

> d[1]
[[1]]
[1] "Gary IN" " Chicago IL "
.

Но я хочу два разных элемента и хотите написать в файл CSV как

 City,State
 Gary,IN
 Chicago,IL
.

Как это сделать?Любая помощь ценится.

Это было полезно?

Решение

Попробуйте:

read.table(text=gsub('Metro', '\n', c), col.names=c('City', 'State'))
#      City State
# 1    Gary    IN
# 2 Chicago    IL
.

Другие советы

Первый шаг IST, чтобы не отказаться от Strsplit

  d <- unlist(strsplit(c,"Metro"))
.

Так что вы получаете однострочные векторы.

  [1] "Gary IN"      " Chicago IL "
.

Во-вторых, вам нужно повторить векторы и обрезать строки.

   trim <- function (x) gsub("^\\s+|\\s+$", "", x)
   for(i in 1:length(d)) { print(trim(d[i])) }

   [1] "Gary IN"
   [1] "Chicago IL"
.

В-треть, вы должны построить DataFrame (полный код)

# 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");
.

Результат

     City State
1    Gary    IN
2 Chicago    IL
.

хотя бы хранить его

write.csv (кадр, "test.frm");

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top