【发布时间】:2019-11-27 15:11:30
【问题描述】:
1) 我有一个名为 df 的数据框,如何在管道运算符中使用的 mutate 函数中包含 if 语句?以下方法不起作用:
df %>%
mutate_if(myvar == "A", newColumn = oldColumn*3, newColumn = oldColumn)
变量 myvar 不包含在数据框中,它是一个“标志”变量,其值为“A”或“B”。当为“A”时,想在数据框中创建一个名为“newColumn”的新列,它是旧列(名为“oldColumn”)的三倍,否则与旧列相同。
2) 想将名为“numbers”的列与另一个名为“seconds”的列中具有最小值的数字条目分开,如下所示:
df$newCol <- df$numbers / df[df$seconds== min(df$seconds),]$numbers
如何使用 mutate 命令和“%>%”来做到这一点,这样看起来更方便?不幸的是,我尝试过的任何方法都不起作用。
感谢您的任何回答, J.
【问题讨论】:
-
如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。为什么要强迫自己使用
%>%运算符?您似乎正在尝试调整控制流,这实际上不是该操作员的用途。mutate_if有条件地对列进行变异,它不允许您打开或关闭整个变异操作。