我从一个pdf表格中抓取了一些格式不佳的信息,我想把它分成基于空格和逗号分隔符的数值列.请注意,数据之间的空格长度是可变的.有些值还将"%"固定为类似"11.48%"的值,而某些单位也将".%"附加为类似"wt.%"的值.
数据帧‘df’中下面的几行数据.
df <- data.frame(Data = c("Ag, ppm 0.219 0.025 0.169 0.269 0.144 0.294 11.48% 22.96% 34.43% 0.208 0.230",
"Al, wt.% 5.27 0.119 5.03 5.50 4.91 5.62 2.25% 4.51% 6.76% 5.00 5.53"))
df$Method <- "XRF"
现在,当我运行以下代码段时,tidyr::Separate‘似乎可以很好地将数据分隔到所需的列中,go 掉"%"符号和".%"后缀,并分配所需的名称.但是,它会截断小数,因此转换后的数值是整数而不是数字.它似乎是与单独使用的".标记应丢弃下一个分隔符、逗号或空格之前的下一个字符.
df2 <- df %>%
separate(., col = Data, into = c("Var", "Unit", "Cert_Val", "ASD1", "ASD2L",
"ASD2H","ASD3L", "ASD3H", "RSD1","RSD2",
'RSD3', 'Low', "High"), convert = TRUE)
str(df2)
'data.frame': 2 obs. of 14 variables:
$ Var : chr "Ag" "Al"
$ Unit : chr "ppm" "wt"
$ Cert_Val: int 0 5
$ ASD1 : int 219 27
$ ASD2L : int 0 0
$ ASD2H : int 25 119
$ ASD3L : int 0 5
$ ASD3H : int 169 3
$ RSD1 : int 0 5
$ RSD2 : int 269 50
$ RSD3 : int 0 4
$ Low : int 144 91
$ High : int 0 5
$ Method : chr "XRF" "XRF"
我怀疑有一些方法可以使用‘sep’命令来使函数不再使用.作为丢弃的信号字符,但我向可能是正则表达式专家寻求一些帮助,以获得正确的语法.或者,也许有一个更好的解决这个问题的解码问题比使用‘分离’?