楼主: Gover_chen
946 3

[程序分享] R语言循环问题 [推广有奖]

  • 0关注
  • 0粉丝

初中生

95%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
2.0647
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
138 点
帖子
12
精华
0
在线时间
14 小时
注册时间
2018-5-7
最后登录
2018-6-29

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
求助高手:
有一组数据:spc_all
USL        SL     LSL    CONTROLGROUP_ID     X1     X2     X3     X4     X5    X6    X7    X8    X9   X10   X11   X12
1  60.0  57.0  54.0   1-PI-CD-BE0002        55.45  57.39  55.45  56.42  57.39  57.0  57.0  57.0  57.0  57.0  57.0  57.0
2  11.0   9.5   8.0  1-PI-THK-BE0009         9.19   8.93   8.70   9.19   8.85   9.5   9.5   9.5   9.5   9.5   9.5   9.5
3  66.0  60.0  54.0  1-PI-CD-AF-A53A      60.19  61.17  61.17  61.17  61.17  60.0  60.0  60.0  60.0  60.0  60.0  60.0
4   6.5   5.0   3.5 1-PI-THK-AF-A53A       4.51   4.76   4.73   4.68   4.56   5.0   5.0   5.0   5.0   5.0   5.0   5.0
5 156.0 150.0 144.0      1-PR-CD0194    151.96 152.94 150.98 152.94 152.94 150.0 150.0 150.0 150.0 150.0 150.0 150.0
6  25.0  20.0  15.0     1-PR-THK0050      18.57  18.90  19.30  19.60  19.13  20.0  20.0  20.0  20.0  20.0  20.0  20.0
  Result
1      
2      
3      
4      
5      
6      


进行判断:
当X1->X12的数据 在USL 和LSL之间,就赋值为1,如果有任何一个数据>USL 或<LSL,就标记为0,并退出i的循环,t+1后再次循环

循环如下:
for(t in 1:nrow(spc_all)){
  for(i in 5:ncol(spc_all)-1)
    {
  if(spc_all[t,i]<spc_all[t,]$LSL | spc_all[t,i]>spc_all[t,]$USL){
     spc_all[t,]$Result<-0
     break
  }else if(spc_all[t,i]>spc_all[t,]$LSL & spc_all[t,i]<spc_all[t,]$USL{
spc_all[t,]$Result<-1
}
  }
  }

上面的循环是否准确?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 control Result Contro Group

沙发
rainningpoet 发表于 2018-5-7 17:52:30 |只看作者 |坛友微信交流群
library(dplyr)
spc_all002=spc_all %>%select(-c(5:16))%>%mutate_all(funs(ifelse(.>=LSL&.<=USL,1,0)))
%>% mutate(maxnum=pmax(X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12)
%>%select(maxnum)

spc_all003=cbind(spc_all002,spc_all)
已有 1 人评分论坛币 收起 理由
cheetahfly + 20 热心帮助其他会员

总评分: 论坛币 + 20   查看全部评分

使用道具

藤椅
Gover_chen 发表于 2018-5-8 10:55:49 |只看作者 |坛友微信交流群
rainningpoet 发表于 2018-5-7 17:52
library(dplyr)
spc_all002=spc_all %>%select(-c(5:16))%>%mutate_all(funs(ifelse(.>=LSL&.% mutate(max ...
用这个方法,我试下

使用道具

板凳
Gover_chen 发表于 2018-5-9 13:46:43 |只看作者 |坛友微信交流群
Gover_chen 发表于 2018-5-8 10:55
用这个方法,我试下
Hi ,用mutate_all函数可以解决问题,谢谢了。有机会一起探讨!
分享下:
spc_all001<-spc_all%>%select(c(14:25))%>%mutate_all(funs(ifelse(.>=spc_all$LSL&.<=spc_all$USL,1,0)))%>%
  mutate(Result=pmin(X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12))%>%
  select(Result)
spc_all<-cbind(spc_all,spc_all001)
#spc_lsl判断:
spc_lsl001<-spc_lsl%>%select(c(14:25))%>%mutate_all(funs(ifelse(.<=spc_lsl$USL,1,0)))%>%
  mutate(Result=pmin(X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12))%>%
  select(Result)
spc_lsl<- cbind(spc_lsl,spc_lsl001)  
#spc_usl判断:
spc_usl001<-spc_usl%>%select(c(14:25))%>%mutate_all(funs(ifelse(.>=spc_usl$LSL,1,0)))%>%
  mutate(Result=pmin(X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12))%>%
  select(Result)
spc_usl<-cbind(spc_usl,spc_usl001)

# merge data:
rbind(spc_all,spc_lsl,spc_usl)->spc
as.factor(spc$Result)->spc$Result

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 12:11