簡體   English   中英

創建一個if else語句以在R中使用循環進行四舍五入的問題

[英]Issues creating an if else statement for rounding with a loop in R

我正在為R類編寫代碼。 我們正在處理循環,如果十進制數大於.6,我應該將數據幀中的數字四舍五入,如果十進制<0.4,則四舍五入,如果介於兩者之間,則不做任何處理。 我無法使它正常工作。

數據幀:

 set.seed(12)
 df<-data.frame(rgamma(n=20,shape=4,scale=2),runif(n=20),rnorm(n=20),paste("Observation",1:20))
 colnames(df)<-c("V1","V2","V3","Obs")

這是我嘗試過的代碼:

rounddf<-rep(nrow(df),ncol(df)-1) 
for (i in 1:ncol(df)-1) 
{
for (j in 1:nrow(df)) 
 {
  if (i>0.6)
   {rounddf[i]<-ceiling(df[i]) 
    } else if (i<0.4){rounddf[i]<-floor(df[i])}
  }
}
rounddf

關鍵是創建一個空的數據框並通過使用for循環中的i和j在新數據框中索引那些值來填充它。 該代碼將完全滿足您的要求。 您還必須確保將數字減少為分數,以便隱藏大於1的部分。 然后,您可以使用if else語句評估它們。

   set.seed(12)
   df<-data.frame(rgamma(n=20,shape=4,scale=2),
   runif(n=20),rnorm(n=20),paste("Observation",1:20))
   colnames(df)<-c("V1","V2","V3","Obs")


   newdf <-data.frame( V1=rep(0,20), V2=rep(0,20), V3=rep(0,20))



   df <- df[,1:3, drop=TRUE]

    for (i in 1:ncol(df)) 
   {
   for (j in 1:nrow(df)) 
   {n <- df[j,i]
   whole <- floor(df[j,i])
   fraction <- n-whole
   if(fraction > .60)  newdf[j,i] <- ceiling(df[j,i])
   if(fraction < .40) newdf[j,i] <- floor(df[j,i])
   if((fraction > .4) & (fraction < .6)) newdf[j,i] <- df[j,i] }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM