У меня есть фрейм данных, который должен быть символом с шаблоном num, char, num, num (например: 1C72), но любое наблюдение с E было написано в научной нотации в оригинальном CSV , (например: 8.00E + 04)
Вот что я попробовал:
library(data.table)
library(dplyr)
example = as.data.frame(c("1B73","1C24","2.00E+08", "4.00E+04", "SBV123"))
colnames(example)[1] <- "x"
example$x = as.character(example$x)
#isolate problematic column
setDT(example)[nchar(example$x) == 8, x8:=x]
#create new columns for data we want
example$a <- substr(example$x8,1,1)
example$b <- substr(example$x8,5,5)
example$c <- substr(example$x8,7,8)
example$good <- paste(example$a,example$b,example$c,sep = "")
example$good[example$good == "NANANA"] <- NA
#combine good data:
example = example %>% mutate(g2 = coalesce(good, x))
Это решение работает, но довольно долго и создает много столбцов. Есть ли способ сделать это без создания группы столбцов?
Желаемый вывод:
|g2 |
|1B73 |
|1C24 |
|2E08 |
|4E04 |
|SBV123|