gpt4 book ai didi

R 意外地将字段从 CSV 文件转换为 NA

转载 作者:行者123 更新时间:2023-12-03 21:27:36 25 4
gpt4 key购买 nike

我正在尝试在 R 中解析 CSV 文件。这是带有分隔符 ~ 的 CSV 文件的第一行。请注意第二个字段位置的 i 文字。

2015-10-29 18:49:42~i~186.37.108.44~Mozilla/5.0 (Linux; Android 4.1.2; GT-S6810E Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36~ea01627ed45116787d3b1c0224a44d77~?~CL~1443~219~729~335~3155~9214~5

这是我试图解析它的方式:

> parsed <- read.csv('i.csv', header=F, sep='~')
> parsed$V2
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[37] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[73] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[109] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[145] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[181] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[217] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[253] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[289] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
> table(count.fields('i.csv', sep='~'))

14
310

为什么会这样?为什么 field#2 是 NA 而不是 i?所有其他字段都可以,field#1 和 field#3 不包含 i 文字。所有其他字段也都可以。

> df$V1[1]
[1] 2015-10-29 18:38:04
257 Levels: 2015-10-29 18:38:04 2015-10-29 18:38:07 2015-10-29 18:38:12 ... 2015-10-29 18:51:46
> df$V3[1]
[1] 24.237.158.3
270 Levels: 1.144.97.1 1.187.195.221 1.187.204.84 1.39.12.184 1.39.13.227 1.39.137.12 1.39.33.86 ... 97.44.1.207

最佳答案

为了完成,我将添加我的评论作为答案。

R中几乎所有的读取函数(read.csv, read.csv2, data, read.fwf, unzip, read.delim) 在内部调用read.table函数。

并且 read.table 调用 type.convert 来回收 colClasses 如果函数调用没有提供它。

来自 type.convertR docs , 它说

This is principally a helper function for read.table. Given a character vector, it attempts to convert it to logical, integer, numeric or complex, and failing that converts it to factor unless as.is = TRUE. The first type that can accept all the non-missing values is chosen.

因此,type.convert 检查值是逻辑值、整数、实数还是复数,按照这个特定的顺序,如果排除所有这些选项,则将值转换为因子(或字符,如果 as.is=T)。

在 R-3.2.1 中,( buggy ) strtoc 和可能的 typeconvert 的实现导致 iNAstrtoc 已在 R-3.3.0 中更正。

在 R-3.3.0 中,type.convert('n±ki') 仅当 k ≠ 1 时才返回复数。

来自 Changes in R-3.3.0 :

type.convert("i") now returns a factor instead of a complex value with zero real part and missing imaginary part.

关于R 意外地将字段从 CSV 文件转换为 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33976959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com