열로 추출하고 구성해야하는 공백으로 구분 된 다른 숫자 값을 포함하는 하나의 열이있는 큰 데이터 프레임이 있습니다.
<Call Begin=6.0982886400000051 End=6.1078732800000051 MaxFreq=40893.5546875 MinFreq=35400.390625 PeakFreq=39672.8515625 PeakFreqs=39672.8515625 39672.8515625 39672.8515625 39672.8515625 39672.8515625 39672.8515625 39672.8515625 39672.8515625 39672.8515625 39672.8515625 39672.8515625 39672.8515625 39062.5 39062.5 39062.5 39062.5 39062.5 39062.5 39062.5 39062.5 39062.5 39062.5 39062.5 39062.5 39062.5 39062.5 39062.5 39062.5 39062.5 39062.5 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 38452.1484375 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37841.796875 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 37231.4453125 36621.09375 36621.09375 36621.09375 36621.09375 Intensity=-14.902734633213136 Periodicity=0.853448275862069 Shape=- CallType=cf-n Species=Pipistrellus kuhlii (77%), Pipistrellus nathusii (77%) Custom=false />
이것은 내 데이터에 대한 추가 정보입니다.
'data.frame':39 obs. of 1 variable $ x1: Factor w/ 120 levels "
<double>25.318181818181806</double>",..: 66 67 68 69 70 71 72 73 74 75...
다음과 같은 것이 필요합니다.
call_begin call_end maxfrec minfrec
1 0.59170816000000048 0.60006400000000049 531.005.859.375 433.349.609.375
2 0.7636582400000006 0.77135872000000061 531.005.859.375 42.724.609.375
peakfrec
1 482.177.734.375
2 469.970.703.125
나는 이것을 달성하기위한 몇 가지 아이디어가 있습니다. 먼저 strsplit을 사용하여 열을 분리하고 나중에 substr 함수를 사용하여 숫자를 추출하고 마지막으로 rbind하여 테이블을 만들고 관련 주제가있는 스레드를 찾았지만 복제 할 수 있습니다. 내 데이터에서.
도움을 주시면 감사하겠습니다. 확실하지 않은 경우 알려주세요.
설명 한 것과 유사한 솔루션입니다. 이 솔루션은 좀 더 일반적이며 열 수에 의존하지 않습니다.
text <- '<Call Begin=0.59170816000000048 End=0.60006400000000049 MaxFreq=53100.5859375 MinFreq=43334.9609375 PeakFreq=48217.7734375
<Call Begin=0.7636582400000006 End=0.77135872000000061 MaxFreq=53100.5859375 MinFreq=42724.609375 PeakFreq=46997.0703125'
process_line <- function(line) {
sp <- strsplit(line, ' ')[[1]][-1]
cn <- sapply(sp, function(x) strsplit(x, "=")[[1]][1])
data <- sapply(sp, function(x) as.numeric(strsplit(x, "=")[[1]][2]))
names(data) <- cn
data
}
t(sapply(strsplit(text, "\n")[[1]], process_line, USE.NAMES = FALSE))
Begin End MaxFreq MinFreq PeakFreq
[1,] 0.5917082 0.6000640 53100.59 43334.96 48217.77
[2,] 0.7636582 0.7713587 53100.59 42724.61 46997.07
그것은 시험 그렇지 않으면, 선으로 분리되지 않는다는 것을 전제로 strsplit(text, "\n")[[1]]
와 text
. 더 작은 청크를 다음과 같이 분할하여 데이터를 얻을 수 있으므로 정규식을 사용할 필요가 없습니다.=
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다