我有一個包含 800 個變數的資料集,我試圖將變數 91 分為 91 到 166。但是我不希望像下面的代碼所建議的那樣擺脫其他變數。有沒有辦法“取消選擇”變數?
謝謝!
dt_test <- dt %>%
select(91:166) %>%
dicho(dich.by = 2)
uj5u.com熱心網友回復:
這將內置 anscombe 資料幀的變數 5 到 8 分為原始名稱后綴 _2。如果您只想覆寫原始列而不是生成新列,則省略 .names 引數。
anscombe %>% mutate(across(5:8, ~ (. > mean(.)), .names = "{col}_2"))
給予:
x1 x2 x3 x4 y1 y2 y3 y4 y1_2 y2_2 y3_2 y4_2
1 10 10 10 8 8.04 9.14 7.46 6.58 1 1 0 0
2 8 8 8 8 6.95 8.14 6.77 5.76 0 1 0 0
3 13 13 13 8 7.58 8.74 12.74 7.71 1 1 1 1
4 9 9 9 8 8.81 8.77 7.11 8.84 1 1 0 1
5 11 11 11 8 8.33 9.26 7.81 8.47 1 1 1 1
6 14 14 14 8 9.96 8.10 8.84 7.04 1 1 1 0
7 6 6 6 8 7.24 6.13 6.08 5.25 0 0 0 0
8 4 4 4 19 4.26 3.10 5.39 12.50 0 0 0 1
9 12 12 12 8 10.84 9.13 8.15 5.56 1 1 1 0
10 7 7 7 8 4.82 7.26 6.42 7.91 0 0 0 1
11 5 5 5 8 5.68 4.74 5.73 6.89 0 0 0 0
uj5u.com熱心網友回復:
根據?dicho,我們可以使用不帶引號的列名
... - 應選擇用于進一步處理的變數的可選的、不帶引號的名稱。必需,如果 x 是資料框(并且沒有向量)并且只應處理來自 x 的選定變數。你也可以使用像 : 或 tidyselect 的 select-helpers 這樣的函式。參見“示例”
library(dplyr)
library(sjmisc)
iris %>%
dicho(!!! rlang::syms(names(.)[1:4]), dich.by = 2)
-輸出
Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Length_d Sepal.Width_d Petal.Length_d Petal.Width_d
1 5.1 3.5 1.4 0.2 setosa 1 1 0 0
2 4.9 3.0 1.4 0.2 setosa 1 1 0 0
3 4.7 3.2 1.3 0.2 setosa 1 1 0 0
4 4.6 3.1 1.5 0.2 setosa 1 1 0 0
5 5.0 3.6 1.4 0.2 setosa 1 1 0 0
...
或者因為它只是列的數字索引,即使指定索引也應該有效
iris %>%
dicho(1:4, dich.by = 2)
uj5u.com熱心網友回復:
您可以將要二分的列傳遞到 dicho 的資料引數中,而不是使用 select。
install.packages("sjmisc")
library(sjmisc)
dt_test <- data.frame(matrix(nrow = 100, ncol = 10))
dt_test[,1] <- rep(c('a', 'b', 'c'), length.out = 100)
for(i in 2:10) {`
dt_test[,i] <- runif(100, 0, 5)`
}
dt_test <- dt_test %>% dicho(dt_test[,2:5], dich.by = 2)`
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/347593.html
上一篇:按組用數字序列填充NA
