[英]Fill in missing rows in data in R
假設我有一個這樣的數據框:
1 8
2 12
3 2
5 -6
6 1
8 5
我想在第一列中 4 和 7 的位置添加一行,並將這些新行的第二列設為 0,因此添加這些行:
4 0
7 0
我不知道如何在 R 中執行此操作。 在 excel 中,我可以在 iferror 中使用 vlookup。 R 中是否有類似的功能組合來實現這一點?
編輯:另外,假設第 1 行丟失並且需要類似地填寫。 這需要另一種解決方案嗎? 如果我想添加行直到達到十行怎么辦?
使用tidyr::complete
填充min
和max
之間的缺失序列。
library(tidyr)
library(rlang)
complete(df, V1 = min(V1):max(V1), fill = list(V2 = 0))
#Or using `seq`
#complete(df, V1 = seq(min(V1), max(V1)), fill = list(V2 = 0))
# V1 V2
# <int> <dbl>
#1 1 8
#2 2 12
#3 3 2
#4 4 0
#5 5 -6
#6 6 1
#7 7 0
#8 8 5
如果我們已經知道 dataframe 的最小值和最大值,我們可以直接使用它們。 假設我們想要從V1 = 1
到 10 的數據,我們可以做到。
complete(df, V1 = 1:10, fill = list(V2 = 0))
如果我們事先不知道列名,我們可以執行以下操作:
col1 <- names(df)[1]
col2 <- names(df)[2]
complete(df, !!sym(col1) := 1:10, fill = as.list(setNames(0, col2)))
數據
df <- structure(list(V1 = c(1L, 2L, 3L, 5L, 6L, 8L), V2 = c(8L, 12L,
2L, -6L, 1L, 5L)), class = "data.frame", row.names = c(NA, -6L))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.