簡體   English   中英

填補R數據中缺失的行

[英]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填充minmax之間的缺失序列。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM