当前位置:  开发笔记 > 编程语言 > 正文

扩展不规则序列并将零添加到缺失值

如何解决《扩展不规则序列并将零添加到缺失值》经验,为你挑选了2个好方法。

我有一个数据框,其序列在'col1'中,值在'col2'中:

col1 col2
2     0.02
5     0.12
9     0.91
13    1.13

我想用1到13的常规序列扩展'col1'中的不规则序列.对于原始数据中缺少的'col1'中的值,我希望'col2' 0在最终输出中得到值:

col1  col2
1     0
2     0.02
3     0
4     0
5     0.12
6     0
7     0
8     0
9     0.91
10    0
11    0
12    0
13    1.13

我怎么能在R中这样做?



1> David Arenbu..:

只是为了完整性,使用自我二进制连接data.table(你将得到NAs而不是零,但如果需要可以很容易地改变)

library(data.table)
setDT(df)[.(seq(max(col1))), on = .(col1)]
#     col1 col2
#  1:    1   NA
#  2:    2 0.02
#  3:    3   NA
#  4:    4   NA
#  5:    5 0.12
#  6:    6   NA
#  7:    7   NA
#  8:    8   NA
#  9:    9 0.91
# 10:   10   NA
# 11:   11   NA
# 12:   12   NA
# 13:   13 1.13



2> Axeman..:
library(tidyr)

complete(d, col1 = 1:13, fill = list(col2 = 0))

要么

complete(d, col1 = seq(max(col1))), fill = list(col2 = 0))
# A tibble: 13 × 2
    col1  col2
    
1      1  0.00
2      2  0.02
3      3  0.00
4      4  0.00
5      5  0.12
6      6  0.00
7      7  0.00
8      8  0.00
9      9  0.91
10    10  0.00
11    11  0.00
12    12  0.00
13    13  1.13

要么

library(dplyr)

left_join(data.frame(col1 = seq(max(d$col1)))), d)

但这将留下NAs而不是零.

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有