我有幾列,其中某些數字對應于不同的值。我只想在前 3 列中替換它們。
A1 A2 A3 A4 A5
1 3 NA 5 2
1 2 1 2 1
3 NA NA 1 8
2 1 NA 1 12
1=cat
2=dog
3=rabbit
所以我希望輸出是:
A1 A2 A3 A4 A5
cat rabbit NA 5 2
cat dog cat 2 1
rabbit NA NA 1 8
dog cat NA 1 12
我知道如何替換單個列中的數字,但我想學習一種更簡單的方法來一次做多個。謝謝!
uj5u.com熱心網友回復:
使用dplyr:
代碼:
df %>%
mutate(across(1:3,
~ case_when(
. == 1 ~ "cat",
. == 2 ~ "dog",
. == 3 ~ "rabbit",
TRUE ~ NA_character_
)))
輸出:
A1 A2 A3 A4 A5
<char> <char> <char> <int> <int>
1: cat rabbit <NA> 5 2
2: cat dog cat 2 1
3: rabbit <NA> <NA> 1 8
4: dog cat <NA> 1 12
資料:
df <- structure(list(A1 = c(1L, 1L, 3L, 2L), A2 = c(3L, 2L, NA, 1L),
A3 = c(NA, 1L, NA, NA), A4 = c(5L, 2L, 1L, 1L), A5 = c(2L,
1L, 8L, 12L)), row.names = c(NA, -4L), class = c("data.table",
"data.frame"), .internal.selfref = <pointer: 0x00000222c4081ef0>)
uj5u.com熱心網友回復:
在 中base R,如果值是數字,則使用這些值作為索引進行替換
df[1:3] <- c("cat", "dog", "rabbit")[as.matrix(df[1:3])]
-輸出
> df
A1 A2 A3 A4 A5
1 cat rabbit <NA> 5 2
2 cat dog cat 2 1
3 rabbit <NA> <NA> 1 8
4 dog cat <NA> 1 12
資料
df <- structure(list(A1 = c(1L, 1L, 3L, 2L), A2 = c(3L, 2L, NA, 1L),
A3 = c(NA, 1L, NA, NA), A4 = c(5L, 2L, 1L, 1L), A5 = c(2L,
1L, 8L, 12L)), class = "data.frame", row.names = c(NA, -4L
))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/383117.html
標籤:r
上一篇:將字串拆分為單獨的列R
