R 我如何折叠行以将NAs分组填充,使每列的行数不均匀?
我正在尝试格式化这些数据,以便将其输入到formattable表中 样本数据:R 我如何折叠行以将NAs分组填充,使每列的行数不均匀?,r,dplyr,tidyr,R,Dplyr,Tidyr,我正在尝试格式化这些数据,以便将其输入到formattable表中 样本数据: test <- tibble(group = c("A", "B", "B", "B", "C", "D"), name = c("Steve", "Mike", "Paul", "Jaimie", "John", "Marco"), year = c(1988, 2001, 2001, 2002, 1997, 2000)) 其中: # A tibble: 6 x
test <- tibble(group = c("A", "B", "B", "B", "C", "D"),
name = c("Steve", "Mike", "Paul", "Jaimie", "John", "Marco"),
year = c(1988, 2001, 2001, 2002, 1997, 2000))
其中:
# A tibble: 6 x 3
group name year
<chr> <chr> <dbl>
1 A Steve 1988
2 B Mike 2001
3 B Paul 2001
4 B Jaimie 2002
5 C John 1997
6 D Marco 2000
# A tibble: 6 x 7
group grouped_id `1988` `1997` `2000` `2001` `2002`
<chr> <int> <chr> <chr> <chr> <chr> <chr>
1 A 1 Steve NA NA NA NA
2 B 2 NA NA NA Mike NA
3 B 3 NA NA NA Paul NA
4 B 4 NA NA NA NA Jaimie
5 C 5 NA John NA NA NA
6 D 6 NA NA Marco NA NA
我试了又试
谢谢你的帮助 我们可以通过
行数
library(dplyr)
library(tidyr)
test %>%
group_by(year) %>%
mutate(rn = row_number()) %>%
ungroup %>%
spread(year, name) %>%
select(-rn)
# A tibble: 5 x 6
# group `1988` `1997` `2000` `2001` `2002`
# <chr> <chr> <chr> <chr> <chr> <chr>
#1 A Steve <NA> <NA> <NA> <NA>
#2 B <NA> <NA> <NA> Mike Jaimie
#3 B <NA> <NA> <NA> Paul <NA>
#4 C <NA> John <NA> <NA> <NA>
#5 D <NA> <NA> Marco <NA> <NA>
# A tibble: 6 x 7
group grouped_id `1988` `1997` `2000` `2001` `2002`
<chr> <int> <chr> <chr> <chr> <chr> <chr>
1 A 1 Steve NA NA NA NA
2 B 2 NA NA NA Mike Jaimie
3 B 3 NA NA NA Paul NA
4 C 5 NA John NA NA NA
5 D 6 NA NA Marco NA NA
library(dplyr)
library(tidyr)
test %>%
group_by(year) %>%
mutate(rn = row_number()) %>%
ungroup %>%
spread(year, name) %>%
select(-rn)
# A tibble: 5 x 6
# group `1988` `1997` `2000` `2001` `2002`
# <chr> <chr> <chr> <chr> <chr> <chr>
#1 A Steve <NA> <NA> <NA> <NA>
#2 B <NA> <NA> <NA> Mike Jaimie
#3 B <NA> <NA> <NA> Paul <NA>
#4 C <NA> John <NA> <NA> <NA>
#5 D <NA> <NA> Marco <NA> <NA>
test %>%
group_by(year) %>%
mutate(rn = row_number()) %>%
ungroup %>%
pivot_wider(names_from = year, values_from = name) %>%
select(-rn)