gpt4 book ai didi

r - 在 R 中用特定条件改变多列

转载 作者:行者123 更新时间:2023-12-02 00:43:23 27 4
gpt4 key购买 nike

我有这个数据

M1  M2  M3 UCL
1 2 3 1.5

我想在这种情况下创建新的列:

如果 M1 大于 UCL,MM1 将为“UP”,否则为“NULL”

如果 M2 大于 UCL,MM2 将为“UP”,否则为“NULL”

如果 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(有关如何操作,请参见例如 here)。

我将结果显示为 tibble,因此您可以看到列类型。请注意,一旦新列中同时包含 UPNA,它将从逻辑类型变为字符类型。

library(dplyr)

textdata <- "M1 M2 M3 UCL
1 2 3 1.5"

mydf <- read.table(text = textdata, header = T)

mydf %>%
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

关于r - 在 R 中用特定条件改变多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45321303/

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