我正在整理在单独的列中给出所需列名映射的数据,如下所示:
df <- data.frame(splitme = c("6, 7, 8, 9", "1,2,3"),
type = c("A, B, C, D", "A, C, D"))
Run Code Online (Sandbox Code Playgroud)
df看起来像:
splitme type
6, 7, 8, 9 A, B, C, D
1,2,3 A, C, D
Run Code Online (Sandbox Code Playgroud)
所需的输出应如下所示:
desired_output <- data.frame(A = c(6,1),
B = c(7, NA),
C = c(8,2),
D = c(9,3))
Run Code Online (Sandbox Code Playgroud)
即:
A B C D
6 7 8 9
1 NA 2 3
Run Code Online (Sandbox Code Playgroud)
如果不是某些行缺少类型的事实,这将是一个直接的任务tidyr::separate
.
## Not correctly aligned
df %>%
tidyr::separate(splitme, into = c("A", "B", "C", "D")) %>%
select(-type)
Run Code Online (Sandbox Code Playgroud)
但很明显,对齐会带来问题.如果只有into
参数可以采用指定拆分规则的列.也许有一个purr::pmap_df
可以在这里使用的基础策略?
你可以使用separate_rows
后面的重塑spread
:
library(dplyr); library(tidyr);
df %>%
# add a row identification number for reshaping purpose
mutate(rn = row_number()) %>%
separate_rows(splitme, type) %>%
spread(type, splitme) %>%
select(-rn)
# A B C D
#1 6 7 8 9
#2 1 <NA> 2 3
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
40 次 |
最近记录: |