【发布时间】:2018-08-02 02:02:41
【问题描述】:
我知道here 和here 有类似的问题,但我无法为我的具体情况找出正确的解决方案。我发现的一些解决方案是使用mutate_ 等的解决方案,但我知道这些现在已经过时了。我是 dplyr 动态用法的新手。
我有一个数据框,其中包含一些具有两个不同前缀(alpha 和 beta)的变量:
df <- data.frame(alpha.num = c(1, 3, 5, 7),
alpha.char = c("a", "c", "e", "g"),
beta.num = c(2, 4, 6, 8),
beta.char = c("b", "d", "f", "h"),
which.to.use = c("alpha", "alpha", "beta", "beta"))
我想创建带有前缀“chosen”的新变量。它们是“alpha”或“beta”列的副本,具体取决于“which.to.use”列中为该行命名的名称。期望的输出是:
desired.df <- data.frame(alpha.num = c(1, 3, 5, 7),
alpha.char = c("a", "c", "e", "g"),
beta.num = c(2, 4, 6, 8),
beta.char = c("b", "d", "f", "h"),
which.to.use = c("alpha", "alpha", "beta", "beta"),
chosen.num = c(1, 3, 6, 8),
chosen.char = c("a", "c", "f", "h"))
我的失败尝试:
varnames <- c("num", "char")
df %<>%
mutate(as.name(paste0("chosen.", varnames)) := case_when(
which.to.use == "alpha" ~ paste0("alpha.", varnames),
which.to.use == "beta" ~ pasteo("beta.", varnames)
))
我更喜欢纯 dplyr 解决方案,更好的是可以包含在修改 df 的更长管道中(即无需停止创建“varnames”)。感谢您的帮助。
【问题讨论】: