R意外地将字段从CSV文件转换为NA
我试图在R中解析CSV文件。这里是CSV文件的第一行,带有分隔符R意外地将字段从CSV文件转换为NA,r,R,我试图在R中解析CSV文件。这里是CSV文件的第一行,带有分隔符~。请注意第二个字段位置的iliteral 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~ea01627ed45116787d3b1
~
。请注意第二个字段位置的i
literal
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
为了完整起见,我添加了我的评论作为答案 R中几乎所有的读取函数(
read.csv
,read.csv2
,data
,read.fwf
,unzip
,read.delim
)都在内部调用read.table
函数
和read.table
调用type.convert
以回收colClasses
(如果未随函数调用提供)
Fromtype.convert
at,它说
这主要是read.table的助手函数。给定一个字符向量,它尝试将其转换为逻辑、整数、数字或复数,如果转换失败,则将其转换为因子,除非as.is=TRUE
。选择可以接受所有非缺失值的第一种类型
因此,type.convert
将按此特定顺序检查值是逻辑值、整数、实数还是复数,如果排除了所有这些选项,则将值转换为因子(或字符,如果as.is=T
)
在R-3.2.1中,()执行stroc
和可能的typeconvert
导致i
转换为NA
<代码>stroc已在R-3.3.0中更正
在R-3.3.0中,type.convert('n±ki')
仅当k≠ 一,
发件人:
type.convert(“i”)
现在返回一个因子,而不是实部为零、虚部缺失的复数
试试这个:
parsed@Narendra谢谢!工作起来很有魅力!但是为什么呢?为什么R将i
解释为NA?如果函数调用中未提供colClasses
,则这也适用于df2read.csv
在内部使用循环列。在R 3.2.2type.convert(“i”)
中,返回NA
和typeof(type.convert('i'))
返回“complex”
。这是一只虫子。它将在R 3.3.3中固定。阅读更多我编辑了我的评论。我同时评论了两个问题,结果搞砸了。检查编辑。这是R3.3.0,不是3.3.3。@Narendra比你解释得更清楚。非常有帮助!
> 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