导入数据

data <- readLines('soil_data.txt')

去除空格

data <- gsub('\s+', ' ', data)

去除无用字符

data <- gsub('[*@-]', '', data)

去除空行

data <- data[nchar(data) > 0]

添加列名

colnames <- c('site_code', 'country', 'texture', 'depth', 'source', 'latitude', 'longitude', 'SCOM', 'SALB', 'SLU1', 'SLDR', 'SLRO', 'SLNF', 'SLPF', 'SMHB', 'SMPX', 'SMKE', 'SLB', 'SLMH', 'SLLL', 'SDUL', 'SSAT', 'SRGF', 'SSKS', 'SBDM', 'SLOC', 'SLCL', 'SLSI', 'SLCF', 'SLNI', 'SLHW', 'SLHB', 'SCEC', 'SADC')

data <- rbind(colnames, data)

将数据分割成多个数据框

data_list <- split(data, cumsum(grepl('^site_code', data)))

去除列名中的空格

names(data_list) <- lapply(names(data_list), function(x) gsub('\s+', '', x))

去除每个数据框第一行中的空格

data_list <- lapply(data_list, function(x) { x[1] <- gsub('\s+', '', x[1]) return(x) })

将每个数据框转换为数据框格式

data_list <- lapply(data_list, function(x) { x <- matrix(x, ncol = length(colnames), byrow = TRUE) x <- as.data.frame(x, stringsAsFactors = FALSE) return(x) })

合并所有数据框

final_data <- do.call(rbind, data_list)

将depth列转换为数字类型

final_data$depth <- as.numeric(final_data$depth)

将缺失值改为NA

final_data[final_data == '-99.0'] <- NA

查看数据结构

str(final_data)


原文地址: https://www.cveoy.top/t/topic/lZwK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录