我正在嘗試創建一個函式,該函式根據列的不同值對資料框的某些已定義列進行二分法。
例如,在以下具有條件 A、B、C 和 D 的資料框中:
A <- c(0, 2, 1, 0, 2, 1, 0, 0, 1, 2)
B <- c(0, 1, 1, 1, 0, 0, 0, 1, 1, 0)
C <- c(0, 0, 0, 1, 1, 1, 1, 1, 1, 1)
D <- c(0, 0, 3, 1, 2, 1, 4, 0, 3, 0)
Data <- data.frame(A, B, C, D)
我希望該函式將我選擇的條件[例如A、B、D]二分法,并根據我分配的閾值對它們進行二分法[例如A為2,B為1,D為3]。
我希望將二分列添加到具有不同名稱的資料框中 [例如 A_dich、B_dich、D_dich]。
最終的資料框應該是這樣的(你會注意到 B 已經被二分法,這很好,它應該被平等對待并添加):
A B C D A_dicho B_dicho D_dicho
1 0 0 0 0 0 0 0
2 2 1 0 0 1 1 0
3 1 1 0 3 0 1 1
4 0 1 1 1 0 1 0
5 2 0 1 2 1 0 0
6 1 0 1 1 0 0 0
7 0 0 1 4 0 0 1
8 0 1 1 0 0 1 0
9 1 1 1 3 0 1 1
10 2 0 1 0 1 0 0
有人可以幫助我嗎?提前謝謝了。
uj5u.com熱心網友回復:
制作一個指定值的小閾值向量,然后Map將其添加到列中:
thresh <- c("A"=2, "B"=1, "D"=3)
Data[paste(names(thresh), "dicho", sep="_")] <- Map(
\(d,th) as.integer(d >= th), Data[names(thresh)], thresh
)
Data
## A B C D A_dicho B_dicho D_dicho
##1 0 0 0 0 0 0 0
##2 2 1 0 0 1 1 0
##3 1 1 0 3 0 1 1
##4 0 1 1 1 0 1 0
##5 2 0 1 2 1 0 0
##6 1 0 1 1 0 0 0
##7 0 0 1 4 0 0 1
##8 0 1 1 0 0 1 0
##9 1 1 1 3 0 1 1
##10 2 0 1 0 1 0 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/449410.html
上一篇:在R中轉換為sf資料框時,重投影不會更改“幾何”列中的值
下一篇:貝塔回歸系數的邊際效應
