【发布时间】:2021-05-17 23:56:31
【问题描述】:
我有一个变量名模式对我来说是可区分的,但不是因为信息被编码在变量名中。因此,我感兴趣的变量都以相同的随机字母数字废话开头,然后是与类型相关的 _Number 和 _time,因此它们看起来像废话_#_#,它转换为 Variable_Type_Time。类型范围从 1:3 到 3 个时间段 1,5,7。
有没有办法使用 purrr:: 和某种正则表达式在功能上重命名以避免一次重命名(asf_1_1 = `Var1 TypeA Time1`, asf_1_2 = `Var1 TypeA Time2`. etc) PS。我计划使用反引号格式的变量名,但您不必为这些建议。
问题的可重现代码
x <- c("_1_1",
"_1_2",
"_1_3",
"_2_1",
"_2_2",
"_2_3",
"_3_1",
"_3_2",
"_3_3",
"_4_3")
paste0("asf",x)
test <- t(as_tibble(rnorm(10, 5.5, .35)))
colnames(test) <- paste0("asf",x)
【问题讨论】:
-
你能添加你的预期输出吗?这听起来像是先从宽到长重塑然后使用例如
tidyr::separate自动分隔条目以创建类型和时间列。 -
举个具体例子:
library(tidyverse); test %>% as_tibble() %>% pivot_longer(everything()) %>% separate(name, c("nonsense", "type", "time"), sep = "_")
标签: r regex tidyverse rename purrr