首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在data.table中添加几个类别的每个组合的缺失值

在data.table中添加几个类别的每个组合的缺失值
EN

Stack Overflow用户
提问于 2019-06-22 21:23:07
回答 1查看 57关注 0票数 2

我得到了一个data.table dt,里面有一些特定年龄和年份的人口统计数据。此外,我还区分了几个类别:Cat_1Cat_2Cat_3

代码语言:javascript
代码运行次数:0
运行
复制
set.seed(1)
Cat_1<-c("A","B")
Cat_2 <- c("u","v")
Year_1 <- c(1991:2000)
Age <- c(46:50)
dt1<-CJ(Cat_1,Cat_2,Year_1,Age)
dt1[,Cat_3 := "x"]
dt1[,value:=runif(dim(dt1)[1],0,1)]

Year_2 <- c(1996:2000)
dt2<-CJ(Cat_1,Cat_2,Year_2,Age)
dt2[,Cat_3 := "y"]
dt2[,value:=runif(dim(dt2)[1],0,1)]
dt <- rbind(dt1,dt2)
colnames(dt) <- c("Cat_1","Cat_2","Year","Age","Cat_3","value")

对于Cat_3的一些值(这里是y值),我没有所有年份的数据(这里只从1996年开始,而不是1991年)。我现在想添加Cat_1Cat_2Cat_3的每个组合,以及所有缺失的年份,并将NA作为值:

也就是说,在此示例中,将为Cat_3==y以及Cat_1Cat_2Agevalue=NA所有组合创建1991-1995年的附加行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-22 21:44:34

也许:

代码语言:javascript
代码运行次数:0
运行
复制
dt <- dt[
  CJ(Cat_3, Cat_1, Cat_2, Year, Age, unique = TRUE), 
  on = .(Cat_3, Cat_1, Cat_2, Year, Age)
  ]

dt[Cat_3 == "y",]的输出

代码语言:javascript
代码运行次数:0
运行
复制
     Cat_1 Cat_2 Year Age Cat_3      value
  1:     A     u 1991  46     y         NA
  2:     A     u 1991  47     y         NA
  3:     A     u 1991  48     y         NA
  4:     A     u 1991  49     y         NA
  5:     A     u 1991  50     y         NA
 ---                                      
196:     B     v 2000  46     y 0.68144251
197:     B     v 2000  47     y 0.09916910
198:     B     v 2000  48     y 0.11890256
199:     B     v 2000  49     y 0.05043966
200:     B     v 2000  50     y 0.92925392
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56715845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档