如何在R中导入含空格字符串的空格分隔数据集且不拆分字符串
解决R中导入含空格字符串的CSV文件问题
问题背景
我有一个大型CSV文件,每行所有数据都在单个单元格内,以空格分隔。数据包含数值和字符串,但导入R时,原本属于单个变量的带空格字符串(比如"Gadus Morhua")会被错误拆分成多列,导致数据结构混乱。
原始数据示例
Survey "SiteNo" "CODE" "Species_name" "Length" "Sex" "Age" "Station" "lonitude" "latitude" "Date" "Weight" 1 "T 19/11" 45 "MMM" "Gadus Morhua" 80 "U" NA "F5" -7.979 50.837 2011-11-14 4 2 "T 20/14" 20 "MNE" "Homarus Gammarus" 75 "U" "0" 1 -2.501 50.216 2014-10-02 3
注:每行代表一条完整记录,所有数据都在单个单元格中。
期望的正确数据格式
| Survey | SiteNo | CODE | Species_name | Length | Sex | Age | Station | lonitude | latitude | Date | Weight |
|---|---|---|---|---|---|---|---|---|---|---|---|
| T 19/11 | 45 | MMM | Gadus Morhua | 80 | U | NA | F5 | -7.979 | 50.837 | 2011-11-14 | 4 |
| T 20/14 | 20 | MNE | Homarus Gammarus | 75 | U | 0 | 1 | -2.501 | 50.216 | 2014-10-02 | 3 |
解决方案
你的数据中带空格的字段是用双引号包裹的,只需在导入时指定识别双引号作为字段边界,就能避免带空格的字符串被拆分。
方法1:基础R的read.table()函数
data <- read.table("your_file.csv", header = TRUE, quote = "\"", stringsAsFactors = FALSE)
header = TRUE:指定第一行为列名quote = "\"":告知R双引号内的内容是完整字段,即使包含空格stringsAsFactors = FALSE:避免字符串被自动转为因子(R新版本默认已启用,可按需省略)
方法2:readr包的read_table()函数
如果使用tidyverse工具链,readr包的函数处理大型文件更高效:
library(readr) data <- read_table("your_file.csv", quote = "\"")
read_table()默认识别空格分隔,指定quote参数后会正确解析带空格的引号字段,同时处理大文件速度更快。
验证结果
导入后可通过str(data)查看数据结构,确认Species_name、SiteNo等带空格字段是单个字符变量,未被拆分。
内容的提问来源于stack exchange,提问作者greentea_678
相关产品推荐
相关产品推荐

