我有一个很大的csv,我正在阅读。直到最近,na字符串可能包括“F”我更新到最新版本,不再允许。如何在数字字段中使用F处理记录?这与加拿大统计局的数据非常相似。使用r 3.5和数据表版本1.11.2可以找到问题。数据表版本1.10.4.3不反对NA字符串中的“F”。
这是一个示例文件
2010/01,Newfoundland and Labrador ,,二手车经销商,“Unadjusted(x 1,000)”,v52367418,2.5.1,F 2010/02,纽芬兰和拉布拉多,二手车经销商,“Unadjusted(x 1,000)”,v52367418,2.5.1,F 2010/03,纽芬兰和拉布拉多,二手车经销商,“Unadjusted(x 1,000)”,v52367418,2.5.1,F 2010/04,纽芬兰和拉布拉多,二手车经销商,“Unadjusted(x 1,000)”,v52367418,2.5.1,F 2010/05,纽芬兰和拉布拉多,二手车经销商,“Unadjusted(x 1,000)”,v52367418,2.5.1,11466.0
当我尝试在此文件上使用fread()函数时,出现以下错误:
library(data.table)
dt <- fread("data.csv", na.strings=c('F'))
#Error in fread("data.csv", na.strings = c("F")) :
# freadMain: NAstring <<F>> is recognized as type boolean, this is not permitted.
答案 0 :(得分:2)
我只是预处理输入,或者后处理data.table。对于您的示例数据,这是第二种方法:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div>
<p>Hello World</p><button>Change color</button>
</div>
<br><br><br><br><br><br>
<div class="foo">FOOOO</div>
</body>
让我
dt <- fread(txt) ## with txt being your input data
dt[V8 != "F", V8new := as.numeric(V8)] # convert numeric
dt[V8 == "F", V8new := NA] # flag rest as NA
dt[, V8 := NULL] # delete old column
setnames(dt, "V8new", "V8") # rename
dt