r - 将 NA 添加到列的顶部
问题描述
我有一栏:
historic_unemployment <- c(0.0575, 0.1275, 0.151666666666667, 0.149166666666667, 0.135,
0.104166666666667, 0.105833333333333, 0.106666666666667, 0.0725,
0.0558333333333333, 0.0683333333333333, 0.0525, 0.055, 0.0408333333333333,
0.0433333333333333, 0.0525, 0.0466666666666667, 0.0275, 0.0441666666666667,
0.0508333333333333, 0.075, 0.0541666666666667, 0.0641666666666667,
0.068)
和另一个:
fitted values <- c(0.137023253252523, 0.130543486762516, 0.118735773791856, 0.109682083019129,
0.10263866553188, 0.0837122001159384, 0.0580772899029193, 0.0531376546910345,
0.0529651623490921, 0.0496381203970878, 0.0503647459492348, 0.0564917834527006,
0.0565944213054081, 0.0445190657070135, 0.0335212669315816, 0.0357076018119224,
0.0546613241321135, 0.0637659442126312, 0.0472901950013254, 0.0653375830289401,
0.0677590453198192)
fit_values 列包含 21 个值,而history_unemployment 包含 24 个。我想 cbind fit_values 和history_unemployment 但由于它们的长度不同,我不能。虽然我可以找到有关将 NA 添加到列底部以使它们具有相同长度的信息,但我找不到任何关于将它们添加到列顶部的信息(在这种情况下它们应该在哪里,因为模型包含滞后值) .
我尝试制作一个新专栏
missing <- c("NA", "NA", "NA") 并使用 rbind() 将“missing”堆叠在“fitted_values”之上,但我最终得到一排 21 个 NA 并且“fitted_values”也是作为一排。
任何帮助将不胜感激!
解决方案
自定义函数,当可以使用DRY 规则时,编写自己的函数总是很有价值的:
cbind_NA_top <- function(x, y) {
stopifnot(is.vector(x) && is.vector(y))
#this line have to be removed if vectors is not provided by symbols (variables)
names <- c(as.name(substitute(x)), as.name(substitute(y)))
x <- unlist(x)
y <- unlist(y)
len_y <- length(y)
len_x <- length(x)
dif <- len_y - len_x
if (dif == 0) {
res <- cbind(x, y)
} else if (dif < 0) {
res <- cbind(x, c(rep(NA, abs(dif)), y))
} else if (dif > 0) {
res <- cbind(c(rep(NA, abs(dif)), x), y)
}
colnames(res) <- names
return(res)
}
cbind_NA_top(fitted_values, historic_unemployment)
cbind_NA_top(historic_unemployment, fitted_values)
l1 <- list(historic_unemployment)
l2 <- list(fitted_values)
cbind_NA_top(l1, l2)
我分配了一个填充了 NA 的空矩阵,因为它可以保护我们避免做错事。
使用c
mm <- matrix(NA, ncol = 2, nrow = max(length(historic_unemployment), length(fitted_values)))
mm[, 1] <- historic_unemployment
mm[, 2] <- c(rep(NA_real_, nrow(mm) - length(fitted_values)) ,fitted_values)
mm
或者
mm <- matrix(NA, ncol = 2, nrow = max(length(historic_unemployment), length(fitted_values)))
mm[, 1] <- historic_unemployment
mm[(nrow(mm) - length(fitted_values) + 1):nrow(mm), 2] <- fitted_values
mm
数据:
historic_unemployment <- c(0.0575, 0.1275, 0.151666666666667, 0.149166666666667, 0.135,
0.104166666666667, 0.105833333333333, 0.106666666666667, 0.0725,
0.0558333333333333, 0.0683333333333333, 0.0525, 0.055, 0.0408333333333333,
0.0433333333333333, 0.0525, 0.0466666666666667, 0.0275, 0.0441666666666667,
0.0508333333333333, 0.075, 0.0541666666666667, 0.0641666666666667,
0.068)
fitted_values <- c(0.137023253252523, 0.130543486762516, 0.118735773791856, 0.109682083019129,
0.10263866553188, 0.0837122001159384, 0.0580772899029193, 0.0531376546910345,
0.0529651623490921, 0.0496381203970878, 0.0503647459492348, 0.0564917834527006,
0.0565944213054081, 0.0445190657070135, 0.0335212669315816, 0.0357076018119224,
0.0546613241321135, 0.0637659442126312, 0.0472901950013254, 0.0653375830289401,
0.0677590453198192)
推荐阅读
- spring-boot - JUnit - 如何模拟 MapStruct 嵌套映射器
- json - 如何从打字稿中的json获取连接键列表
- python - GQL 查询限制
- java - java.lang.String类型的值连接无法转成JSONObject Android
- javascript - Xamarin 本地加载 JS 脚本
- r - Save.image() 响应 gzfile 中的错误
- python - 如何从数据框列中提取特定项目并将它们用作剩余项目的标签?
- three.js - 在框架中克隆实体
- abap - 通过 GUI 调用的分层 ALV 报告有 18 列,但通过 RFC 只有 6 列。为什么?
- html - 如何使用 RegEx 过滤 html 文档中的链接?