我有这个数据
M1 M2 M3 UCL
1 2 3 1.5
如果M3大于UCL,MM3将为“UP”,否则为“NULL”
M1 M2 M3 UCL | MM1 MM2 MM3
1 2 3 1.5 | NULL UP UP
但是我有几个M列(比如m1~m1005),所以我想做一些代码,比如mutate_each和mutate_at。如何使用mutate和ifelse函数在特定条件下创建新列?
下面是一个简单的DPLYR
解决方案。请注意,向新变量添加后缀更容易,例如获取m1_m
而不是mm1
。但是,如果您想重命名colnames
,您可以在之后设置它们(例如,请参见这里的如何重命名)。
我将结果显示为tibble
,这样您就可以看到列类型。请注意,一旦新列中同时包含up
和na
,它将从逻辑类型更改为字符类型。
library(dplyr)
textdata <- "M1 M2 M3 UCL
1 2 3 1.5"
mydf <- read.table(text = textdata, header = T)
mydf %>%
mutate_if(is.integer, as.numeric) %>%
mutate_at(vars(starts_with("M")), funs(M = ifelse(. > UCL, "UP", NA))) %>%
tibble::as.tibble()
# A tibble: 1 x 7
M1 M2 M3 UCL M1_M M2_M M3_M
<dbl> <dbl> <dbl> <dbl> <lgl> <chr> <chr>
1 1 2 3 1.5 NA UP UP
我需要帮助完成一项看似简单的任务。我想基于< code>dplyr::mutate中的一个条件创建几个新变量。我可以使用< code>ifelse创建一个新变量,但是我想一步创建几个。 让我们假设这是我的数据帧。 我想要这样的东西: 因此,if条件应该基于条件< code>y创建三个新变量 我想与< code>if_else和< code>case_when一起使用。 谢谢转发
最近没有使用当前tidyverse动词来回答这个问题(R 4.1 所需的输出应如下所示。感谢您对此的任何帮助!
在我的实际数据集中,我有许多列以cent_dept开始,以agg结束,所以选择与组件匹配的用户是非常重要的。 谢谢你的帮助!
我有一个带有两个得分列的data.frame。我希望在每行的基础上有条件地使用其中一个的数据。我用下面的一个例子来解释... 在这种情况下,Final最终将与test_low相同,因为对于两个Mains(即,当单元格为'high'时,单元格为'low时),test_low列小于test_high列。
我有数据。看起来像这样的框架 首先,我想根据Day aka group_by(Day)对数据帧进行分组。当在每个组中,每种类型(tr1,tr2)的和(平均sd)大于控制(ctrl)的差(平均sd),然后我想在新列(new.col)中指定值~是,如果不是,我想指定值~否。 例如,我希望我的数据看起来像这样。它不一定要看起来像这样
我正在研究一个数据帧(昏暗: 10,155乘33)。几排 对于变量age_band,我想使用tidyverse函数separate(),mutate() 将年龄段分成两列a1 我正在使用以下代码: 错误:列必须是长度10155(行数)或1,而不是0请建议可以做什么。当我在ifelse语句中运行没有'$'的代码时,我得到一个错误对象'a1'没有找到,而通常,我们在使用链接运算符时不需要'$' 也是