gpt4 book ai didi

r - 使用 mutate_at 使用列名更新单元格值

转载 作者:行者123 更新时间:2023-12-01 12:08:28 26 4
gpt4 key购买 nike

我正在处理调查数据。一些问题要求参与者检查所有适用于他们的选项。在我目前拥有的数据框中,每个可能的响应都有一列,如果参与者选择了该选项,则记录值为 1。例如,对于“您在工作中经历过以下哪些情绪?”这个问题,选项有“无聊”、“压力”、“满足”,我的数据框将如下所示:

df <- data.frame(
id = seq(1,3,1),
boredom = c(NA, 1, NA),
stress = c(1, 1, 1),
contentment = c(NA, NA, NA)
)

我想用列名更新任何等于 1 的单元格值,这样我就有一个如下所示的数据框:

df2 <- data.frame(
id = seq(1,3,1),
boredom = c(NA, 'boredom', NA),
stress = rep('stress', 3),
contentment = rep(NA, 3)
)

然后我可以使用 dplyr::unite 创建一个列,将参与者报告的所有情绪存储在一个列中。

我的直观做法是使用 mutate_at 和 ifelse(),但我不知道如何在调用 ifelse() 时引用列的名称。例如,我想写这样的东西:

df_updated <- df %>% 
mutate_at(vars(boredom:stress), funs(ifelse(. == 1, 'relevant column name', .)))

我希望有人能告诉我如何访问 ifelse() 调用中的列名。或者,如果我说错了树,也非常欢迎提供有关另一种方法的指导。

最佳答案

试试这个:

df %>% mutate_at(vars(boredom:stress), funs(ifelse(. == 1, deparse(substitute(.)), .)))

关于r - 使用 mutate_at 使用列名更新单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54321150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com