這個問題出現了,在處理這個問題時如果存在,請替換串列名稱
我有這個帶有兩個向量的操縱虹膜資料集:
new_name <- c("new_setoas", "new_virginica")
to_select <- c("setosa", "virginica")
iris %>%
group_by(Species) %>%
slice(1:2) %>%
mutate(Species = as.character(Species))
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <chr>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 7 3.2 4.7 1.4 versicolor
4 6.4 3.2 4.5 1.5 versicolor
5 6.3 3.3 6 2.5 virginica
6 5.8 2.7 5.1 1.9 virginica
我想to_select用來自另一個向量 ( new_name)的值替換從向量 ( ) 中選擇的 Species 中的值
當我做:
new_name <- c("new_setoas", "new_virginica")
to_select <- c("setosa", "virginica")
iris %>%
group_by(Species) %>%
slice(1:2) %>%
mutate(Species = as.character(Species)) %>%
mutate(Species = ifelse(Species %in% to_select, new_name, Species))
# I get:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <chr>
1 5.1 3.5 1.4 0.2 new_setoas
2 4.9 3 1.4 0.2 **new_virginica** # should be new_setoas
3 7 3.2 4.7 1.4 versicolor
4 6.4 3.2 4.5 1.5 versicolor
5 6.3 3.3 6 2.5 **new_setoas** # should be new_virginica
6 5.8 2.7 5.1 1.9 new_virginica
雖然我知道這是因為回收而發生的。我不知道如何避免這種情況!
uj5u.com熱心網友回復:
我們可以使用recode- 而不是分組然后修改組列,它可以在group_by步驟本身完成
library(dplyr)
iris %>%
group_by(Species = recode(as.character(Species),
!!!setNames(new_name, to_select))) %>%
slice(1:2)
-輸出
# A tibble: 6 × 5
# Groups: Species [3]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <chr>
1 5.1 3.5 1.4 0.2 new_setoas
2 4.9 3 1.4 0.2 new_setoas
3 7 3.2 4.7 1.4 versicolor
4 6.4 3.2 4.5 1.5 versicolor
5 6.3 3.3 6 2.5 new_virginica
6 5.8 2.7 5.1 1.9 new_virginica
uj5u.com熱心網友回復:
的解決方案match比akrun 的解決方案更復雜,但它就在這里。
suppressPackageStartupMessages(
library(dplyr)
)
new_name <- c("new_setoas", "new_virginica")
to_select <- c("setosa", "virginica")
iris %>%
group_by(Species) %>%
slice(1:2) %>%
mutate(Species = as.character(Species)) %>%
mutate(i_new = match(Species, to_select)) %>%
mutate(Species = ifelse(is.na(i_new), Species, new_name[i_new])) %>%
select(-i_new)
#> # A tibble: 6 × 5
#> # Groups: Species [3]
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 5.1 3.5 1.4 0.2 new_setoas
#> 2 4.9 3 1.4 0.2 new_setoas
#> 3 7 3.2 4.7 1.4 versicolor
#> 4 6.4 3.2 4.5 1.5 versicolor
#> 5 6.3 3.3 6 2.5 new_virginica
#> 6 5.8 2.7 5.1 1.9 new_virginica
使用reprex v2.0.2創建于 2022-11-04
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/527678.html
標籤:r代替回收
