1、within()
data_3 <- within(data_3,{
zuofenduan <- NA zuofenduan[zuofen>=0 & zuofen<=960] <- 1
zuofenduan[zuofen>960 & zuofen<=1260] <- 2
zuofenduan[zuofen>1260 & zuofen<=1636] <- 3
zuofenduan[zuofen>1636 & zuofen<=2100] <- 4
zuofenduan[zuofen>2100 & zuofen<=4215] <- 5})
2、if 循环 + function
fenduan <- function(data1,var1,num){
q1 <- as.data.frame(quantile(data1[,var1],probs = seq(0,1,0.2)))
q2 <- c(q1[1:6,1])
q2[1] <- 0
for(i in 1:nrow(data1)){
if(data1[i,var1]>=0 & data1[i,var1]<=q2[2]) data1[i,num] <- 1
if (data1[i,var1]>q2[2] & data1[i,var1]<=q2[3]) data1[i,num] <- 2
if (data1[i,var1]>q2[3] & data1[i,var1]<=q2[4]) data1[i,num] <- 3
if (data1[i,var1]>q2[4] & data1[i,var1]<=q2[5]) data1[i,num] <- 4
if (data1[i,var1]>q2[5] & data1[i,var1]<=q2[6]) data1[i,num] <- 5 }
data1}
# function 应用
www <- "huofenduan"
qqq <- "huofen"
fenduan(data_3,qqq,www)
3、ifelse 赋值
data1$case_bf <- NA ## 血脂
data1$case_bf <- ifelse(data1$tg>=1.7,1,
ifelse(data1$HDL>1,0,
ifelse(data1$SEX==0,1,
ifelse(data1$HDL<0.9,1,0))))
网友评论