在R中用NA填充数据帧
假设我有一个类似下面myData的数据集:在R中用NA填充数据帧,r,dataframe,R,Dataframe,假设我有一个类似下面myData的数据集: set.seed(1234) Date <- seq(as.Date("1990-01-01"), as.Date("1990-12-01"), "months") Date <- rep(Date, 5) Species <- rep(c("cat", "lion", "tiger", "leopard", "cheetah"), each=12) Measurement <- rnorm(60) index <
set.seed(1234)
Date <- seq(as.Date("1990-01-01"), as.Date("1990-12-01"), "months")
Date <- rep(Date, 5)
Species <- rep(c("cat", "lion", "tiger", "leopard", "cheetah"), each=12)
Measurement <- rnorm(60)
index <- sample(1:60, 10)
myData <- data.frame(Date[-index], Species[-index], Measurement[-index])
set.seed(1234)
日期您正在从tidyr
软件包中寻找complete
功能,该软件包专为您设计:
tidyr::complete(myData, Date, Species)
# Source: local data frame [60 x 3]
#
# Date Species Measurement
# (date) (fctr) (dbl)
# 1 1990-01-01 cat -1.2070657
# 2 1990-01-01 cheetah -0.5238281
# 3 1990-01-01 leopard -2.1800396
# 4 1990-01-01 lion -0.7762539
# 5 1990-01-01 tiger -0.6937202
# 6 1990-02-01 cat 0.2774292
# 7 1990-02-01 cheetah -0.4968500
# 8 1990-02-01 leopard -1.3409932
# 9 1990-02-01 lion NA
# 10 1990-02-01 tiger NA
# .. ... ... ...
您正在从tidyr
软件包中寻找complete
功能,该软件包专为您设计:
tidyr::complete(myData, Date, Species)
# Source: local data frame [60 x 3]
#
# Date Species Measurement
# (date) (fctr) (dbl)
# 1 1990-01-01 cat -1.2070657
# 2 1990-01-01 cheetah -0.5238281
# 3 1990-01-01 leopard -2.1800396
# 4 1990-01-01 lion -0.7762539
# 5 1990-01-01 tiger -0.6937202
# 6 1990-02-01 cat 0.2774292
# 7 1990-02-01 cheetah -0.4968500
# 8 1990-02-01 leopard -1.3409932
# 9 1990-02-01 lion NA
# 10 1990-02-01 tiger NA
# .. ... ... ...
我们不需要包裹。使用expand.grid
frombase R
merge(expand.grid(Date=unique(myData$Date),
Species=as.character(unique(myData$Species))), myData, all.x=TRUE)
数据
myData我们不需要软件包。使用expand.grid
frombase R
merge(expand.grid(Date=unique(myData$Date),
Species=as.character(unique(myData$Species))), myData, all.x=TRUE)
数据
myData为了完整起见,这里还有一个data。表
解决方案:
library(data.table)
setDT(myData)[CJ(Date = Date, Species = Species, unique = TRUE), on = .(Date, Species)]
它使用CJ()。这类似于。为了完整起见,这里还有一个数据。表解决方案:
library(data.table)
setDT(myData)[CJ(Date = Date, Species = Species, unique = TRUE), on = .(Date, Species)]
它使用CJ()。这类似于。我正在尝试您所说的内容,但我遇到了一个错误:“错误:无法加入'Date'x'Date'列:索引超出范围”请注意,您的数据没有正确命名。重命名数据,然后相应地使用列名。Yep。我没有注意到。谢谢我正在尝试您所说的,但是我得到了一个错误:“错误:无法在列'Date'x'Date'上加入:索引超出范围”注意,您的数据没有正确命名。重命名数据,然后相应地使用列名。Yep。我没有注意到。谢谢