如何解决年份每 12 行出现一次,但我想要所有行
我有一个奇怪的问题。看看df
:
Year <- c(1994,rep("NA",11),1995,11))
Month <-c(1:12,1:12)
df <- data.frame(Year,Month)
年份每 12 行出现一次,但我希望在所有行中出现,例如:
Year <- c(rep(1994,12),rep(1995,12))
Month <-c(1:12,1:12)
df_2 <- data.frame(Year,Month)
> df_2
Year Month
1 1994 1
2 1994 2
3 1994 3
4 1994 4
5 1994 5
6 1994 6
7 1994 7
8 1994 8
9 1994 9
10 1994 10
11 1994 11
12 1994 12
13 1995 1
14 1995 2
15 1995 3
16 1995 4
17 1995 5
18 1995 6
19 1995 7
20 1995 8
21 1995 9
22 1995 10
23 1995 11
24 1995 12
我尝试了循环方法,但无法解决此问题。
PS:此 df
会持续到 2020 年,因此 Month 列会持续到 2020 年的 11。
如果有人可以提供帮助,我将不胜感激:)
解决方法
我们可以使用不带引号的 NA
,并使用 fill
library(dplyr)
library(tidyr)
df %>%
mutate(Year = na_if(Year,"NA")) %>%
fill(Year)
-输出
# Year Month
#1 1994 1
#2 1994 2
#3 1994 3
#4 1994 4
#5 1994 5
#6 1994 6
#7 1994 7
#8 1994 8
#9 1994 9
#10 1994 10
#11 1994 11
#12 1994 12
#13 1995 1
#14 1995 2
#15 1995 3
#16 1995 4
#17 1995 5
#18 1995 6
#19 1995 7
#20 1995 8
#21 1995 9
#22 1995 10
#23 1995 11
#24 1995 12
,
您可以通过这种方式在基础 R 中执行此操作:
yr <- rep(1994:2020,each = 12)
yrs <- length(1994:2020)
mth <- rep(1:12,yrs)
df <- data.frame(cbind(yr,mth))
,
这是一个包含 zoo
包的解决方案。
首先,使 strings "NA"
真正的 NA
值。
is.na(df$Year) <- df$Year == "NA"
现在向下填充,函数na.locf
的默认值。
df$Year <- zoo::na.locf(df$Year)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。