[英]R: How to create a new column for 90th quantile based off previous rows in a data frame
[英]How to create new rows in a data frame based on missing data in R
我想根據數據框中缺少的數據向正在使用的數據框添加新行。
這是一個示例數據框。
year <- c(2001,2001,2002,2002,2003,2004,2004,2005)
make <- c('Honda', 'Ford', 'Honda', 'Ford', 'Honda', 'Honda', 'Ford', 'Honda')
number_manufactured <- c(10, 20, 15, 47, 14, 19, 35, 9)
cars <- data.frame(year, make, number_manufactured)
我想向數據框添加一行以獲取number_manufactured = 0所缺少的值,例如:(2003,Ford,0)和(2005,Ford,0)
我想要的數據框是這樣的:
year <- c(2001,2001,2002,2002,2003,2003,2004,2004,2005,2005)
make <- c('Honda', 'Ford', 'Honda', 'Ford', 'Honda','Ford', 'Honda', 'Ford', 'Honda', 'Ford')
number_manufactured <- c(10, 20, 15, 47, 14, 0, 19, 35, 9, 0)
cars <- data.frame(year, make, number_manufactured)
謝謝您的幫助!
這是使用expand.grid
和merge
的基本R方法。
# get new data.frame
dfNew <- merge(cars, expand.grid(unique(cars$year), unique(cars$make)),
by.x=c("year", "make"), by.y=c("Var1", "Var2"), all=TRUE)
# fill in 0s
dfNew$number_manufactured[is.na(dfNew$number_manufactured)] <- 0
expand.grid
返回具有兩個向量的所有組合的data.frame。 在這里,它可以滿足年份和年份的獨特水平。 將其合並到原始data.frame上以生成新的data.frame,並使用all = TRUE參數包含新的觀察值。 新的觀測值是制造數量的NA,因此第二行將其轉換為0。
tidyr::complete
對於此類事情很方便。 您在要為其添加行的數據集中列出變量。 你也可以列出你想(默認情況下你得到填補其他變量是什么NA
通過) fill
。
library(tidyr)
complete(cars, year, make, fill = list(number_manufactured = 0))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.