gpt4 book ai didi

r - 填写 R 数据框中缺失的行

转载 作者:行者123 更新时间:2023-12-02 00:22:04 26 4
gpt4 key购买 nike

我已经将一些原始数据导入到 R 中,如下所示:

表 1:

ID    Year    Value
01 1999 25
01 2000 12
01 2002 14
02 1998 16
02 2003 0
02 2004 14

该表按 ID 和年份排序,但如您所见,缺少一些年份。我从数据源知道这些缺失年份的值应该为零。我有另一个变量,我称之为 MODEL_YEAR,并设置为 2015。我想填补空白,直到并包括 MODEL_YEAR。

我认为我会采取的步骤是:

  1. 为表 1 中的每个 ID 选择最早的年份。
  2. 构建一个新表 (Table2),其中包含从每个 ID 的最早年份到 MODEL_YEAR 的连续年份。
  3. 将 Table1 连接到 Table2 以重新添加值,并将任何 NA 值替换为零。

我想我可以完成第 1 步和第 3 步,但还不知道如何执行第 2 步,即构建 Table2。

如果您认为我的方法不是最优的,我们将不胜感激或提供替代方法的建议。

谢谢

最佳答案

我认为 tidyr::expand() 会很有用。这是一个 tidyverse 解决方案:

library(tidyverse)
# how to build table2
table2 <- table1 %>% group_by(ID) %>% mutate(Earliest.Year = min(Year)) %>%
select(-Value, -Year) %>% distinct() %>%
expand(Year = Earliest.Year:2015, Earliest.Year) %>%
select(-Earliest.Year)

# a direct piepe solution
table1 %>% group_by(ID) %>% mutate(Earliest.Year = min(Year)) %>%
select(-Value, -Year) %>% distinct() %>%
expand(Year = Earliest.Year:2015, Earliest.Year) %>%
select(-Earliest.Year) %>%
left_join(table1, by = c("ID", "Year")) %>%
replace(is.na(.), 0)
# output
# A tibble: 35 x 3
# Groups: ID [?]
ID Year Value
<int> <int> <dbl>
1 1 1999 25
2 1 2000 12
3 1 2001 0
4 1 2002 14
5 1 2003 0
6 1 2004 0
7 1 2005 0
8 1 2006 0
9 1 2007 0
10 1 2008 0
# ... with 25 more rows

关于r - 填写 R 数据框中缺失的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55064337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com