楼主: yijiaobani
4201 4

[问答] R语言中data.table包中的fread函数如何设置0为缺失值? [推广有奖]

  • 4关注
  • 5粉丝

已卖:70份资源

博士生

26%

还不是VIP/贵宾

-

威望
0
论坛币
196 个
通用积分
10.7311
学术水平
2 点
热心指数
8 点
信用等级
0 点
经验
5127 点
帖子
147
精华
0
在线时间
236 小时
注册时间
2015-5-18
最后登录
2020-10-28

楼主
yijiaobani 发表于 2018-10-22 11:39:15 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
fread函数, 读取速度非常快, 也很友好, 但是现在我想在读取csv数据时,将0作为缺失值, 报错了, 示例代码如下:

  1. dat = data.frame(ID=1:10,y1=c(1:5,0,0,0,1,0))
  2. write.csv(dat,"dat.csv",row.names = F)
  3. fread("dat.csv",na.strings = c("0"))
  4. read.csv("dat.csv",na.strings = 0)
复制代码

报错类型:
  1. > fread("dat.csv",na.strings = c("0"))
  2. Error in fread("dat.csv", na.strings = c("0")) :
  3.   freadMain: NAstring <<0>> is recognized as type boolean, this is not permitted.
复制代码

我看了帮助文档也没有找到解决方案, read.csv可以将0设置为缺失值, 结果没问题:
  1. > read.csv("dat.csv",na.strings = 0)
  2.    ID y1
  3. 1   1  1
  4. 2   2  2
  5. 3   3  3
  6. 4   4  4
  7. 5   5  5
  8. 6   6 NA
  9. 7   7 NA
  10. 8   8 NA
  11. 9   9  1
  12. 10 10 NA
复制代码

有人知道解决方案么?
十分感谢.


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:解决方案 缺失值 解决方

<img src="stati ...

沙发
Whig 在职认证  发表于 2018-10-22 12:18:10
这是个Bug,可以在Github上查到,至少data.table 1.11.4也有这个问题
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

藤椅
ryoeng 在职认证  发表于 2018-10-22 14:32:37
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

板凳
yijiaobani 发表于 2018-10-22 17:36:03
Whig 发表于 2018-10-22 12:18
这是个Bug,可以在Github上查到,至少data.table 1.11.4也有这个问题
嗯, 好的, 十分感谢.

我还是先用read.csv吧.

报纸
yijiaobani 发表于 2018-10-22 17:36:23
ryoeng 发表于 2018-10-22 14:32
以上函数也可解决楼主的问题。
十分感谢.

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 12:16