我正在整理数据,其中所需的列名映射在单独的列中给出,如下所示:
df <- data.frame(splitme = c("6, 7, 8, 9", "1,2,3"),
type = c("A, B, C, D", "A, C, D"))
df的样子如下:
splitme type
6, 7, 8, 9 A, B, C, D
1,2,3 A, C, D
期望的输出应该如下所示:
desired_output <- data.frame(A = c(6,1),
B = c(7, NA),
C = c(8,2),
D = c(9,3))
i.e.:
A B C D
6 7 8 9
1 NA 2 3
如果没有一些行缺少类型,使用
tidyr::separate
将会是一个非常简单的任务。## Not correctly aligned
df %>%
tidyr::separate(splitme, into = c("A", "B", "C", "D")) %>%
select(-type)
但很明显,对齐存在问题。如果into
参数可以接受指定分割规则的列,那就好了。也许可以使用基于purr::pmap_df
的策略来解决这个问题?
eval
/parse
;我用了:pmap_dfr(df, function(splitme, type){ as_tibble(setNames(as.list(strsplit(splitme, ", ")[[1]]), strsplit(type, ", ")[[1]]))})
。但是separate_rows
更好。 - cboettig