r에서 두 개의 다른 요소로 문자열을 분할하는 방법?
문제
나는 문자열이
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"
.
세 번째 데이터 프레임 (완료 코드)
을 빌드해야합니다.# 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");
제휴하지 않습니다 StackOverflow