[英]Adding rows to the data frame in R
我有一个 dataframe 如下所示。我想为每个名称添加行,其中包含年份和一年中缺少的一周,总值为 0。
Name Year Week Total
John 2021 1 3
John 2021 2 2
John 2021 5 1
John 2021 10 2
Mary 2020 3 1
Mary 2021 5 2
预期结果
John 2021 1 3
John 2021 2 2
John 2021 3 0
John 2021 4 0
John 2021 5 1
John 2021 6 0
.
.
.
John 2021 53 0
这就是我想要做的
data1<-data %>%
complete(Week = seq(min(Week), max(Week), by = 'week')) %>%
mutate_each(funs(ifelse(is.na(.),0,.)))
你走在正确的轨道上:
data %>%
complete(Week = 1:53, Name, fill=list(Total=0))
给出了这个:
Week Name Year Total
<int> <chr> <int> <dbl>
1 1 John 2021 3
2 2 John 2021 2
3 3 John NA 0
4 4 John NA 0
5 5 John 2021 1
6 6 John NA 0
7 7 John NA 0
8 8 John NA 0
9 9 John NA 0
10 10 John 2021 2
# ... with 96 more rows
您可以使用fill(Year)
将 Year 列的 NA 替换为之前的非 NA 值。 如果你也想做多年,那么你可以group_by
Year,它会自动填充Year值。
我想这就是你要的:
x1 %>%
group_by(Name) %>%
complete(Week = seq(min(Week), max(Week), by = 1), fill = list(Total = 0))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.