gpt4 book ai didi

r - 数据框上的 If/else 函数以创建条件矩阵

转载 作者:行者123 更新时间:2023-12-04 22:55:10 24 4
gpt4 key购买 nike

以下是重现性的数据集:

    a=c(90.41,37.37,18.98)
b=c(103.39,39.44,51.68)
c=c(83.51,36.41,47.46)
d=c(94.60,38.57,50.22)
e=c(95.04,38.81,50.49)
xx=t(data.frame(a,b,c,d,e))
df=data.frame(xx)

这是我尝试在数据框上运行的 if/else 函数
 classify=function(df){
if (df>=110) {
class="5"}
else if (df<110 & df>=103){
class="4"}
else if (df<103 & df>=95){
class="3"}
else if (df<95 & df>=76){
class="2"}
else if (df<76){
class="1"}
else {class="none"}
}

但是,我希望 if/else 函数生成一个新的数据框,如下所示:
     df
X1 X2 X3
a 2 1 1
b 4 1 1
c 2 1 1
d 2 1 1
e 3 1 1

我不确定如何执行此操作,因此非常感谢任何帮助。我预计 if/else 函数本身有问题,但我非常缺乏经验,我不知道如何轻松检测脚本中的错误。谢谢!

最佳答案

sapply(df, function(x) {as.numeric(as.character(cut(x, c(-Inf,76,95,103,110,Inf), seq(1:5))))})

X1 X2 X3
[1,] 2 1 1
[2,] 4 1 1
[3,] 2 1 1
[4,] 2 1 1
[5,] 3 1 1

使用 cut 设置间隔(它的第二个参数)和标签(它的第三个参数)。但是,它返回一个因子,因此如果您愿意,请转换回数字。由于您想在整个数据帧上运行该函数,请使用 sapply 或 lapply。

关于r - 数据框上的 If/else 函数以创建条件矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50836815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com