我的问题与下面的post个非常相似
在我的数据库中,我有多个列包含像M0,M6,M12.等等.我有列的名字是M0,M6,M12.
我想替换包含M0的第一列...使用列中对应的值
作为一个理解性的例子,我有:
df <- data.frame(time=c("M0","M12","M0","M0","M12"),
M0=c(1,2,4,5,1),
M12=c(8,5,9,2,1))
df
time M0 M12
1 M0 1 8
2 M12 2 5
3 M0 4 9
4 M0 5 2
5 M12 1 1
如前所述,我发现一篇文章有有趣的答案,其中一个特别是使用cur_data()
,
df2 <- df %>%
rowwise %>%
mutate(newd = cur_data()[[cur_data()$time]]) %>%
ungroup
df2
# A tibble: 5 × 4
time M0 M12 newd
<chr> <dbl> <dbl> <dbl>
1 M0 1 8 1
2 M12 2 5 5
3 M0 4 9 4
4 M0 5 2 5
5 M12 1 1 1
它的工作,但需要很长的时间,也显然cur_data
是反对赞成pick()
,我不知道如何取代,使它的工作
对此有任何建议将不胜感激!