R语言CSV处理:跳过无关行及拆分逗号分隔列的方法
解决方案
1. 直接读取跳过前两行的多列数据框(最优方法)
不用绕弯子用readLines,直接用read.csv的skip参数就能一步到位,自动解析逗号分隔的列和列名:
my.files <- list.files() # skip=2 跳过前两行,header=TRUE 表示第3行是列名 df <- read.csv(my.files[1], skip = 2, header = TRUE)
这样得到的df就是结构正确的多列数据框,无需后续拆分操作。
2. 拆分已有的逗号分隔单列数据框
如果已经用你原来的代码得到了单列的temp2,可以用以下两种方法拆分:
方法一:Base R 实现
# 将单列的字符串按逗号拆分 split_list <- strsplit(as.character(temp2[, 1]), ",") # 把拆分后的列表转成矩阵,再转为数据框 df_split <- data.frame(do.call(rbind, split_list), stringsAsFactors = FALSE) # 用第一行作为列名 colnames(df_split) <- df_split[1, ] # 删除作为列名的第一行数据 df_split <- df_split[-1, ] # 自动转换数据类型(字符转数值等) df_split <- type.convert(df_split, as.is = TRUE)
方法二:tidyr 包简化操作
先安装并加载tidyr包,用separate函数一键拆分:
install.packages("tidyr") library(tidyr) # 按逗号拆分单列,用第一行的内容作为新列名 df_split <- separate(temp2, col = 1, into = strsplit(temp2[1,1], ",")[[1]], sep = ",") # 删除列名行并转换数据类型 df_split <- df_split[-1, ] %>% type.convert(as.is = TRUE)
内容的提问来源于stack exchange,提问作者domwill
相关产品推荐
相关产品推荐

