年份每 12 行出现一次,但我希望所有行都出现
The year appears every 12 lines, but I want on all lines
我有一个奇怪的问题。看看df
:
Year <- c(1994, rep("NA", 11),1995,rep("NA",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 年,所以月份列一直持续到 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
你可以这样在 base R 中完成:
yr <- rep(1994:2020, each = 12)
yrs <- length(1994:2020)
mth <- rep(1:12, yrs)
df <- data.frame(cbind(yr, mth))
这是包 zoo
的解决方案。
首先,使字符串"NA"
真正的NA
值。
is.na(df$Year) <- df$Year == "NA"
现在往下填,函数默认na.locf
。
df$Year <- zoo::na.locf(df$Year)
我有一个奇怪的问题。看看df
:
Year <- c(1994, rep("NA", 11),1995,rep("NA",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 年,所以月份列一直持续到 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
你可以这样在 base R 中完成:
yr <- rep(1994:2020, each = 12)
yrs <- length(1994:2020)
mth <- rep(1:12, yrs)
df <- data.frame(cbind(yr, mth))
这是包 zoo
的解决方案。
首先,使字符串"NA"
真正的NA
值。
is.na(df$Year) <- df$Year == "NA"
现在往下填,函数默认na.locf
。
df$Year <- zoo::na.locf(df$Year)