全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2915 7
2017-04-09
论坛内的各位大神们,

我想处理一笔数据,命名为data,截取前5笔如下:
1.PNG
每个ID有对应T1-4,res1-4.
T1对应res.1。同理,T2-4对应res.2-4。
T含有的数值是1-27 和空值
res含有的结果是1-4 和空值

我想对每个人建立一张表记录,此人在1-27种T之下的res。

例如,
第1个人,T1=2,res.1=1,得到的结果应该是在(1,2)的格子填上1。x=1表示第一个人,y=2表示T的结果。
第2个人,T1=2,T2=23,res.1=1,res.2=1,得到的结果应该是在(2,2)的格子填上1,(2,23)填上1
第5个人,T1=19,res.1=1,得到的结果应该是在(5,19)的格子填上1。
如果,第n个人,T1=19,res.1=4,得到的结果应该是在(n,19)的格子填上4。

由于资料笔数较多,将近500万笔。所以,使用回圈的方式,读取每一笔资料,并在对应的格子填入数值,耗时较久(2万笔就读了将近3个小时,RAM=16g)。
想请问论坛内的各位高手们有何想法?
二维码

扫码加我 拉你入群

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

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

全部回复
2017-4-10 07:45:12
*讀取資料可以試試data.table::fread

*建立紀錄可以試試tidyr::gather || tidyr::spread
二维码

扫码加我 拉你入群

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

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

2017-4-10 09:09:26
1,下面的操作是基于tbl_df类的,如何将现在的类型转换成tbl_df类,请自己尝试
2,对于ID的排序是基于数字的大小,如果要用其他方法排序,请自己尝试。
3,我假设数据不完整的地方是NA,而不是"",请自行转换或将下面关于NA的操作换成相应类似操作。

复制代码


二维码

扫码加我 拉你入群

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

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

2017-4-10 10:25:02
Eric1028 发表于 2017-4-10 07:45
*讀取資料可以試試data.table::fread

*建立紀錄可以試試tidyr::gather || tidyr::spread
恩恩,謝謝您XD。
是用的fread~我再試試gather和spread~
二维码

扫码加我 拉你入群

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

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

2017-4-10 10:26:13
cheetahfly 发表于 2017-4-10 09:09
1,下面的操作是基于tbl_df类的,如何将现在的类型转换成tbl_df类,请自己尝试
2,对于ID的排序是基于数字的 ...
恩呢~这两个尝试我应该可以处理~

谢谢大神!代码超详细!
二维码

扫码加我 拉你入群

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

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

2017-4-10 10:49:11
cheetahfly 发表于 2017-4-10 09:09
1,下面的操作是基于tbl_df类的,如何将现在的类型转换成tbl_df类,请自己尝试
2,对于ID的排序是基于数字的 ...
Joining, by = "ID"
Error: cannot allocate vector of size 602.7 Mb
In addition: Warning message:
Too few values at 3282294 locations: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...
电脑吃不下……
在res.4的时候没法unite……res.1-3都可以……
         ID     BD T4_res.4 check.day Amount.1 Amount.2 check.y    T_res       T res addon
1     707 197704        _    200404      405      213    2004   Insure 1084840  NA     0
2     707 197704        _    200404      405      213    2004 T1_res.1       2   1     0
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群