如何在R中导入非逗号分隔CSV文件并转换缺失值为NA


我尝试使用read.table()语法将CSV文件导入R中,但得到的data.frame是按逗号分隔的。如何调整才能使其呈现如下方图片所示的样式?同时如何将缺失值转换为NA?

解决方法
1. 修正分隔符设置
从目标样式和原始CSV内容来看,数据实际是空格分隔,而非逗号分隔。调整read.table()的sep参数即可解决列拆分错误的问题:
# 读取空格分隔的CSV,同时读取表头 df <- read.table("你的文件路径.csv", header = TRUE, sep = " ")
如果数据里的分隔符是任意空白(比如多个空格、制表符混合),可以省略sep参数,用默认的sep = "",它会自动识别任意数量的空白字符作为分隔符:
df <- read.table("你的文件路径.csv", header = TRUE)
2. 转换缺失值为NA
通过na.strings参数指定需要转换为NA的字符,比如CSV中的空值、特定占位符都可以设置:
# 将空字符串转换为NA df <- read.table("你的文件路径.csv", header = TRUE, sep = " ", na.strings = "") # 如果缺失值用特定字符(如"?")表示,可同时指定多个值 df <- read.table("你的文件路径.csv", header = TRUE, sep = " ", na.strings = c("", "?"))
3. 额外优化建议
- 若数据包含带引号的字符串字段,添加
quote = "\""参数确保字段被正确识别 - 如果是欧洲格式的CSV(逗号当小数分隔符、分号当列分隔符),可以用
read.csv2()替代,但你的场景更适合read.table()
内容的提问来源于stack exchange,提问作者clover S
相关产品推荐
相关产品推荐

