在 R 中转置和填充 NA
Transposing and Filling NAs in R
我的 data.frame df1
看起来像这样:
A NA NA B NA NA C NA NA
1 2 3 4 5 6 7 8 9
我希望它看起来像这样:
A 1
A 2
A 3
B 4
B 5
B 6
C 7
C 8
C 9
有什么想法吗?
假设你有一个像这样的data.frame:
df <- data.frame(matrix(c("A", NA, NA, "B", NA, NA, "C", NA, NA, 1:9), byrow = TRUE, nrow = 2))
> df
X1 X2 X3 X4 X5 X6 X7 X8 X9
1 A <NA> <NA> B <NA> <NA> C <NA> <NA>
2 1 2 3 4 5 6 7 8 9
使用tidyr
:
df %>%
t() %>%
as.data.frame() %>%
fill(V1, .direction = "down")
给你
V1 V2
1 A 1
2 A 2
3 A 3
4 B 4
5 B 5
6 B 6
7 C 7
8 C 8
9 C 9
na.locf
来自 zoo
的选项
library(zoo)
na.locf(as.data.frame(t(df)))
# V1 V2
#X1 A 1
#X2 A 2
#X3 A 3
#X4 B 4
#X5 B 5
#X6 B 6
#X7 C 7
#X8 C 8
#X9 C 9
数据
df <- data.frame(matrix(c("A", NA, NA, "B", NA, NA, "C", NA, NA, 1:9),
byrow = TRUE, nrow = 2))
我的 data.frame df1
看起来像这样:
A NA NA B NA NA C NA NA
1 2 3 4 5 6 7 8 9
我希望它看起来像这样:
A 1
A 2
A 3
B 4
B 5
B 6
C 7
C 8
C 9
有什么想法吗?
假设你有一个像这样的data.frame:
df <- data.frame(matrix(c("A", NA, NA, "B", NA, NA, "C", NA, NA, 1:9), byrow = TRUE, nrow = 2))
> df
X1 X2 X3 X4 X5 X6 X7 X8 X9
1 A <NA> <NA> B <NA> <NA> C <NA> <NA>
2 1 2 3 4 5 6 7 8 9
使用tidyr
:
df %>%
t() %>%
as.data.frame() %>%
fill(V1, .direction = "down")
给你
V1 V2
1 A 1
2 A 2
3 A 3
4 B 4
5 B 5
6 B 6
7 C 7
8 C 8
9 C 9
na.locf
来自 zoo
library(zoo)
na.locf(as.data.frame(t(df)))
# V1 V2
#X1 A 1
#X2 A 2
#X3 A 3
#X4 B 4
#X5 B 5
#X6 B 6
#X7 C 7
#X8 C 8
#X9 C 9
数据
df <- data.frame(matrix(c("A", NA, NA, "B", NA, NA, "C", NA, NA, 1:9),
byrow = TRUE, nrow = 2))