我正在尝试创建一个函数,该函数根据不同的值(取决于列)将数据框架中的某些已定义列分为两个部分。
例如,在具有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有人能帮我吗?在此之前,非常感谢您。
发布于 2022-03-24 21:27:42
创建一个指定值的小阈值向量,然后将其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 0https://stackoverflow.com/questions/71609550
复制相似问题