首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R-函数,它根据不同的阈值将数据帧的某些列分开。

R-函数,它根据不同的阈值将数据帧的某些列分开。
EN

Stack Overflow用户
提问于 2022-03-24 21:20:20
回答 1查看 38关注 0票数 1

我正在尝试创建一个函数,该函数根据不同的值(取决于列)将数据框架中的某些已定义列分为两个部分。

例如,在具有A、B、C和D条件的下列数据框架中:

代码语言:javascript
运行
复制
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已经被二分,这很好,它应该被同等对待并添加):

代码语言:javascript
运行
复制
   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

有人能帮我吗?在此之前,非常感谢您。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-24 21:27:42

创建一个指定值的小阈值向量,然后将其Map到列中:

代码语言:javascript
运行
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71609550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档