gpt4 book ai didi

r - 如何使用 mutate() 在所有其他列的函数中创建新列而不命名它们

转载 作者:行者123 更新时间:2023-12-02 18:49:22 30 4
gpt4 key购买 nike

我有一个 tibble(我已经在使用 tidyverse),但由于它很大,让我们使用稍微修改过的 iris 数据集:

iris %>%
as_tibble() %>%
select(-5)

我想创建另一列,它是这些列的平方和的平方根(您可能会注意到,这些列都是dbl)。但是,此方法应该适用于任意数量的列和任意名称,不仅因为原始数据集具有更多列,而且因为它更优雅。

此代码有效,但特定于具有以下名称的列:

iris %>%
as_tibble() %>%
select(-5) %>%
mutate(linear = sqrt(Sepal.Length^2+Sepal.Width^2+Petal.Length^2+Petal.Width^2)) %>%
arrange(linear)

这给出了预期的输出:

> iris %>%
+ as_tibble() %>%
+ select(-5) %>%
+ mutate(linear = sqrt(Sepal.Length^2+Sepal.Width^2+Petal.Length^2+Petal.Width^2)) %>%
+ arrange(linear)
# A tibble: 150 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width linear
<dbl> <dbl> <dbl> <dbl> <dbl>
1 4.5 2.3 1.3 0.3 5.23
2 4.3 3 1.1 0.1 5.36
3 4.4 2.9 1.4 0.2 5.46
4 4.4 3 1.3 0.2 5.49
5 4.4 3.2 1.3 0.2 5.60
6 4.6 3.1 1.5 0.2 5.75
7 4.6 3.2 1.4 0.2 5.78
8 4.8 3 1.4 0.1 5.83
9 4.7 3.2 1.3 0.2 5.84
10 4.8 3 1.4 0.3 5.84
# … with 140 more rows

最佳答案

这对你有用吗?

iris %>%
+ as_tibble() %>%
+ select(-5) %>% mutate(linear = sqrt(rowSums(iris[-5]**2))) %>% arrange(linear)
# A tibble: 150 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width linear
<dbl> <dbl> <dbl> <dbl> <dbl>
1 4.5 2.3 1.3 0.3 5.23
2 4.3 3 1.1 0.1 5.36
3 4.4 2.9 1.4 0.2 5.46
4 4.4 3 1.3 0.2 5.49
5 4.4 3.2 1.3 0.2 5.60
6 4.6 3.1 1.5 0.2 5.75
7 4.6 3.2 1.4 0.2 5.78
8 4.8 3 1.4 0.1 5.83
9 4.7 3.2 1.3 0.2 5.84
10 4.8 3 1.4 0.3 5.84
# ... with 140 more rows

关于r - 如何使用 mutate() 在所有其他列的函数中创建新列而不命名它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66989661/

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