У меня есть столбец data.frame с целями +3000, которые я хотел бы разделить, но они нерегулярны, хотя с рисунком. Вот несколько примеров и то, что я хотел бы, чтобы они были преобразованы в.R Разбиение строк с рисунком нерегулярных длин
00700/Z14P120: xhkg
03988/Z14C3.2: xhkg
6A/F15C0.905: xcme
ADS/X14P56: xeur
AX1/X14P375: XAMS
BIDU/28X14C250: xcbf
ES/F15C1960: xcme
FUR/M16P8: xams
00700 | P | 120
03988 | C | 3.2
6A | C | 0.905
ADS | P | 56
AX1 | P | 375
BIDU | C | 250
ES | C | 1960
FUR | P | 8
Я думаю, что это охватывает все возможные длины и типы значений для каждой подстроки.
Первый новый столбец должен перезаписать столбец ввода и две другие столбцы должны перезаписать существующие пробелы столбцов в одной и той же data.frame
Другая сложность заключается в том, что есть data.frame строки, которые уже отформатированные правильно, однако является столбцом, который идентифицирует строки, которые не являются. Ниже приведен фрагмент таблицы как .SSV-выход.
Окончательное решение: Это оказалось сложнее, чем предполагалось заменить значения в существующих колоннах, из-за проблем с НС, классов и регистрации номеров строк. Таким образом, я закончил создание временных столбцов и заменил весь столбец, причем этот довольно уродливый и неэффективный способ. Код, предоставленный Анандой Махто, однако работает блестяще.
ETO <- as.array(data_results$InstrumentSymbolCode)
ETO <- do.call(rbind,
strsplit(gsub("(.*)/[A-Z0-9]+?([A-Z])([0-9\\.-]+)?:.*",
"\\1NONSENSESPLIT\\2NONSENSESPLIT\\3", ETO),
"NONSENSESPLIT", fixed = TRUE))
ETO[data_results$ProductCategoryID!=9] <- ""
temp1 <- array(0,nrow(ETO))
temp2 <- array(0,nrow(ETO))
temp3 <- array(0,nrow(ETO))
for (i in 1:nrow(ETO)){
if (data_results$ProductCategoryID[i]==9) {
temp1[i] <- ETO[i,1]
temp2[i] <- ETO[i,2]
temp3[i] <- ETO[i,3]
} else {
temp1[i] <- as.character(data_results$InstrumentSymbolCode[i])
temp2[i] <- as.character(data_results$PutCall[i])
temp3[i] <- data_results$Strike[i]
}
}
data_results$InstrumentSymbolCode<-as.character(temp1)
data_results$PutCall <- temp2
data_results$Strike <- temp3
Спасибо! Мне нужна вторая колонка в столбце PutCall, а третий - в столбце Strike. Который я должен был бы сделать сам теперь, когда у меня есть разделенные ценности. – Marcus