R:在纵向数据中插入丢失的日期而不会丢失信息

阿尔塔布克

我在数据表中有一个纵向数据集,类似于下面的简化示例:

> head(data)
   Country     ID        Date         Value
1:   AT        AT6306    2012-11-01   16.2
2:   AT        AT6306    2012-11-02   12.2
3:   AT        AT6306    2012-11-03   11.3
4:   AT        AT6306    2012-11-04   14.2
5:   AT        AT6306    2012-11-05   17.3
6:   AT        AT6306    2012-11-06   12.5

> tail(data)
   Country     ID        Date         Value
1:   SE        SE0935    2014-06-25   16.2
2:   SE        SE0935    2014-06-26   12.2
3:   SE        SE0935    2014-06-27   11.3
4:   SE        SE0935    2014-06-28   14.2
5:   SE        SE0935    2014-06-29   17.3
6:   SE        SE0935    2014-06-30   12.5

ID是面板变量,它是唯一的,在国家之间没有重叠。仅查看唯一值的日期范围为2012-10-232014-09-30显然,每个的范围Date都不相同ID此外,可能存在缺失值。为了拥有一个平衡的面板,我想填补我的数据集的空白。

根据@akron的建议,在此处改编答案,我将执行以下操作:

data2 <- data[, CJ(ID=unique(ID), Date=unique(Date))]
setkey(data2, ID, Date)

data.new <- merge(data, data2, by=c("ID", "Date"), all.y = TRUE)
setkey(data.new, ID, Date)

all.y = TRUE因此,使用该选项,R会为中的每个缺失日期添加行data但是,如果IDDate中的行之前不存在,则以外的所有其他字段均为空白data也就是说,我的数据看起来像这样

> head(data.new)
   Country     ID        Date         Value
1:   NA        AT6306    2012-10-23   NA
2:   NA        AT6306    2012-10-24   NA
3:   NA        AT6306    2012-10-25   NA
4:   NA        AT6306    2012-10-26   NA
5:   NA        AT6306    2012-10-27   NA
6:   NA        AT6306    2012-10-28   NA    

我确实希望该名称Value为NA,因为它已丢失。但是,由于Country对于给定来说不会改变ID,因此我希望填写该字段。

阿克伦
library(data.table)
DT <- data.table(dat)
setkey(DT, Date, Country, ID)
res <- DT[CJ(seq(min(Date), max(Date), by='1 day'), 
                        unique(Country), unique(ID))]

 head(res)
#    Country   ID       Date Value
#1:      AT  935 2012-11-01    NA
#2:      AT 6306 2012-11-01  16.2
#3:      SE  935 2012-11-01    NA
#4:      SE 6306 2012-11-01    NA
#5:      AT  935 2012-11-02    NA
#6:      AT 6306 2012-11-02  12.2

更新

您可以做的一种选择是

DT <- data.table(dat)
DT[,CountryID:= paste(Country,ID)]
setkey(DT, Date, CountryID)
DT1 <- DT[CJ(unique(Date), unique(CountryID))][,
      c('Country', 'ID'):=  list(gsub("[ 0-9]", "", CountryID),
               gsub("[^ 0-9]", "", CountryID)),][,-5L]


head(DT1,3)
#     Country    ID       Date Value
#1:      AT  6306 2012-11-01  16.2
#2:      SE   935 2012-11-01    NA
#3:      AT  6306 2012-11-02  12.2

nrow(DT1)
#[1] 24

数据

dat <- structure(list(Country = c("AT", "AT", "AT", "AT", "AT", "AT", 
"SE", "SE", "SE", "SE", "SE", "SE"), ID = c(6306L, 6306L, 6306L, 
6306L, 6306L, 6306L, 935L, 935L, 935L, 935L, 935L, 935L), Date = structure(c(15645, 
15646, 15647, 15648, 15649, 15650, 15669, 15670, 15671, 15672, 
15673, 15674), class = "Date"), Value = c(16.2, 12.2, 11.3, 14.2, 
17.3, 12.5, 16.2, 12.2, 11.3, 14.2, 17.3, 12.5)), .Names = c("Country", 
"ID", "Date", "Value"), row.names = c("1:", "2:", "3:", "4:", 
"5:", "6:", "1:1", "2:1", "3:1", "4:1", "5:1", "6:1"), class = "data.frame")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

调整图像大小而不会丢失信息

来自分类Dev

将人类可读的日期转换为毫秒,然后再次返回而不会丢失信息

来自分类Dev

Coq-归纳功能而不会丢失信息

来自分类Dev

keras.layers.Flatten不会丢失信息吗?

来自分类Dev

R-将一列因子转换为二进制字符而不会丢失信息

来自分类Dev

在一个字节内托管Color.argb(a,r,g,b)而不会丢失信息

来自分类Dev

如何加入而不丢失信息?

来自分类Dev

前往:将uint64转换为int64而不会丢失信息

来自分类Dev

在odoo 12中用户与雇员之间设置关联后丢失信息

来自分类Dev

丢失信息,将pdf页面作为图像获取

来自分类Dev

Ruby on Rails会话会丢失信息。为什么?

来自分类Dev

从 fits rec 转换为 ndaray 时丢失信息

来自分类Dev

逐行处理日期:从数据框中获取日期行(“POSIXct”)而不会丢失类

来自分类Dev

将多列数据框更改为单列而不会丢失python中的信息

来自分类Dev

将多列数据框更改为单列而不会丢失python中的信息

来自分类Dev

如何在不丢失信息的情况下更多地并行化 spark etl(在文件名中)

来自分类Dev

R中的日期循环显示丢失格式

来自分类Dev

Simulink:如何将持续时间值为零的基于事件的信号转换为基于时间的信号而不会丢失信息

来自分类Dev

意外丢失信息后,如何恢复输入网站的信息?

来自分类Dev

如何在数据框中插入丢失的数据?

来自分类Dev

删除分区而不会丢失数据

来自分类Dev

将列表转换为R中的数据帧而不会丢失根节点

来自分类Dev

在OpenCV中删除图像中的噪声而不会丢失数据

来自分类Dev

功能中丢失指针信息

来自分类Dev

SimpleSamlphp 中的“状态信息丢失”

来自分类Dev

检测是否可以在不丢失信息的情况下缩小位图的尺寸

来自分类Dev

当我打开它们的窗口的新实例时,Tkinter小部件会丢失信息

来自分类Dev

xcode构建错误:从指针转换为较小类型'int'的语义问题会丢失信息

来自分类Dev

为什么当我重新加载angularJS页面时会丢失信息

Related 相关文章

  1. 1

    调整图像大小而不会丢失信息

  2. 2

    将人类可读的日期转换为毫秒,然后再次返回而不会丢失信息

  3. 3

    Coq-归纳功能而不会丢失信息

  4. 4

    keras.layers.Flatten不会丢失信息吗?

  5. 5

    R-将一列因子转换为二进制字符而不会丢失信息

  6. 6

    在一个字节内托管Color.argb(a,r,g,b)而不会丢失信息

  7. 7

    如何加入而不丢失信息?

  8. 8

    前往:将uint64转换为int64而不会丢失信息

  9. 9

    在odoo 12中用户与雇员之间设置关联后丢失信息

  10. 10

    丢失信息,将pdf页面作为图像获取

  11. 11

    Ruby on Rails会话会丢失信息。为什么?

  12. 12

    从 fits rec 转换为 ndaray 时丢失信息

  13. 13

    逐行处理日期:从数据框中获取日期行(“POSIXct”)而不会丢失类

  14. 14

    将多列数据框更改为单列而不会丢失python中的信息

  15. 15

    将多列数据框更改为单列而不会丢失python中的信息

  16. 16

    如何在不丢失信息的情况下更多地并行化 spark etl(在文件名中)

  17. 17

    R中的日期循环显示丢失格式

  18. 18

    Simulink:如何将持续时间值为零的基于事件的信号转换为基于时间的信号而不会丢失信息

  19. 19

    意外丢失信息后,如何恢复输入网站的信息?

  20. 20

    如何在数据框中插入丢失的数据?

  21. 21

    删除分区而不会丢失数据

  22. 22

    将列表转换为R中的数据帧而不会丢失根节点

  23. 23

    在OpenCV中删除图像中的噪声而不会丢失数据

  24. 24

    功能中丢失指针信息

  25. 25

    SimpleSamlphp 中的“状态信息丢失”

  26. 26

    检测是否可以在不丢失信息的情况下缩小位图的尺寸

  27. 27

    当我打开它们的窗口的新实例时,Tkinter小部件会丢失信息

  28. 28

    xcode构建错误:从指针转换为较小类型'int'的语义问题会丢失信息

  29. 29

    为什么当我重新加载angularJS页面时会丢失信息

热门标签

归档