我有一个关于R中循环的问题。我的数据包含2000行,其中有2000个个体。我有37列,其中有37个连续变量的不同信息。我想用tuckey方法识别37个变量的离群值。
这里的代码我使用的一列:
iqr <- IQR(mydata$x)
q1 <- quantile(mydata$x)[[2]]
q2 <- quantile(mydata$x)[[3]]
q3 <- quantile(mydata$x)[[4]]
mydata$Medium_Outliers_low <- ifelse(mydata$x< q1-1.5*iqr,1,0)
mydata$Medium_Outliers_high <- ifelse(mydata$x> q3+1.5*iqr,1,0)
mydata$Extremes_Outliers_low <- ifelse(mydata$x < q1-3*iqr,1,0)
mydata$Extremes_Outliers_high <- ifelse(mydata$x > q3+3*iqr,1,0)
我想为我的37个变量重复这段代码,所以我将为37个变量中的每一个创建4个变量(Medium_Outliers_low和co),所以创建一个包含148个变量的数据库。
我尝试一个循环:
for (i in 4:41){
iqr <- IQR(mydata[[i]])
q1 <- quantile(mydata[[i]])[[2]]
q2 <- quantile(mydata[[i]])[[3]]
q3 <- quantile(mydata[[i]])[[4]]
mydata$Medium_Outliers_low <- ifelse(mydata[[i]]< q1-1.5*iqr,1,0)
mydata$Medium_Outliers_high <- ifelse(mydata[[i]]> q3+1.5*iqr,1,0)
mydata$Extremes_Outliers_low <- ifelse(mydata[[i]]< q1-3*iqr,1,0)
mydata$Extremes_Outliers_high <- ifelse(mydata[[i]]> q3+3*iqr,1,0)
但是我只创建了4个变量(Medium_Outliers_low和co)。所以我想请你帮助创建一个循环来重复代码,因为我不知道这样做。我搜索了类似的问题,但没有找到任何东西。非常感谢!!!C。
1条答案
按热度按时间6uxekuva1#
原因是Outliers列在每次迭代中都会被覆盖,并返回上一次迭代的输出。
paste
最好使用索引或列名来唯一标识每个列。