【发布时间】:2018-07-13 08:55:23
【问题描述】:
我有看起来像这样的丑陋数据:
source_data <- data.frame(thing = c('C', 'E', 'G'), ugly_sequence_string = c('A,B,C', 'D,E,F', 'G,H,I'))
我想在ugly_sequence_string中添加一个东西的整数位置的列:
target_data <- data.frame(thing = c('C', 'E', 'G'), position = c(3L, 2L, 1L))
我觉得这必须通过 strsplit(或 stringr::str_split)、dplyr::mutate、which 和 purrr::map 的某种组合来实现,但我未能围绕某些方面思考如何做到这一点。例如,这绝对行不通:
source_data %>%
dplyr::mutate(
position = which(stringr::str_split(ugly_sequence_string, ',') == thing)
)
我已经尝试将其分解为一个函数(使用 unlist() 和 as.list() 的各种组合以将其转换为满意的格式),但这似乎很容易我只是没有摸索的东西。有什么建议吗?
【问题讨论】:
标签: r string dataframe dplyr stringr