R 是否可以动态更改列(列中的值具有其他列名)
所以我有一个数据帧的一列,它包含一个值,它等于一个不同的列名。对于每一行,我想更改名为的列的值R 是否可以动态更改列(列中的值具有其他列名),r,dplyr,tidyverse,rlang,R,Dplyr,Tidyverse,Rlang,所以我有一个数据帧的一列,它包含一个值,它等于一个不同的列名。对于每一行,我想更改名为的列的值 df <- tibble(.rows = 6) %>% mutate(current_stage = c("Stage-1", "Stage-1", "Stage-2", "Stage-3", "Stage-4", "Stage-4"), `Stage-1` = c(1,1,1,2,4,5), `Stage-2` = c(40,50,20,10,15,10), `Stage-3` = c(
df <- tibble(.rows = 6) %>% mutate(current_stage = c("Stage-1", "Stage-1", "Stage-2", "Stage-3", "Stage-4", "Stage-4"), `Stage-1` = c(1,1,1,2,4,5), `Stage-2` = c(40,50,20,10,15,10), `Stage-3` = c(1,2,3,4,5,6), `Stage-4` = c(NA, 1, NA, 2, NA, 3))
A tibble: 6 x 5
current_stage `Stage-1` `Stage-2` `Stage-3` `Stage-4`
<chr> <dbl> <dbl> <dbl> <dbl>
Stage-1 1 40 1 NA
Stage-1 1 50 2 1
Stage-2 1 20 3 NA
Stage-3 2 10 4 2
Stage-4 4 15 5 NA
Stage-4 5 10 6 3
但我得到的错误是:找不到对象“current\u stage”中的错误
这可能吗?还是我应该咬紧牙关写一个不同的函数?在tidyverse中,我认为使用长格式和聚集是最简单的方法,如下所示:
图书馆管理员
df%>%
rowid_到_列%>%
gatherstage,值,-current_stage,-rowid%>%
mutatevalue=if_elsestage==当前_阶段,15,值%>%
传播阶段、价值
>一个tibble:6x6
>rowid当前_阶段`1阶段`2阶段`3阶段`4阶段`
>
>1阶段-1 15 40 1 NA
>2第1阶段15 50 2 1
>3第2阶段1 15 3 NA
>4 4第3阶段2 10 15 2
>5阶段-4 4 15 5 15
>6阶段-4 5 10 6 15
由v0.2.1于2019-05-20创建,您可以收集到更长的格式,并在行中使用它。您可以使用基本R.df以矢量化的方式进行此操作
df %>% mutate(!!rlang::sym(current_stage) := 15)