簡體   English   中英

在表中添加觀察並賦予給定觀察的屬性(連接)

[英]Adding observations in a table and attribute a given observation (join)

下午好,

我正在分析給定月份的觀察分布,例如:

日期觀察

2010-01 10

2010-03 15

2010-05 16

問題:如何在表中插入缺失的日期(2010-02 和 2010-05)(使用包含所有月度日期的其他表)並將 0 屬性作為觀察值。

提前致謝。

我們將“日期”轉換為Date class,然后使用complete的數據集擴展數據集,方法是獲取min/maxfirstlast “日期” by “1 個月”,同時用 0 fill “觀察”

library(tidyr)
library(dplyr)
df1 %>%
     mutate(Date = as.Date(Date)) %>%
     complete(Date = seq(first(Date), last(Date), by = '1 month'), 
            fill = list(Observations = 0))

如果有另一個具有完整“日期”的數據集,那么顯而易見的選項是left_join ,然后將“觀察”中的NA元素替換為 0,因為默認情況下,如果我們沒有匹配項,它將用NA填充

left_join(df2, df1, by = 'Date') %>%
     mutate(Observations = replace_na(Observations, 0))

注意: df2是具有完整“日期”的數據集

如果'df2'還有其他列,我們不需要select這些列

left_join(df2 %>% 
               select(Date), df1) %>%
     mutate(Observations = replace_na(Observations, 0))

base R中,我們可以使用merge

transform(merge(df2, df1, by = 'Date', all.x = TRUE),
      Observations = replace(Observations, is.na(Observations), 0))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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