簡體   English   中英

通過for循環和功能附加到數據框

[英]Append to dataframe through for loop and function

當我最后運行另存為csv的代碼時,一切都正常運行。 這意味着我要按國家/地區篩選數據集,並進行一些延續並將其另存為國家/地區文件。 當我嘗試綁定數據集時,我什么也沒收到。 我嘗試了不同的解決方案,但發現沒有任何效果。 顯然我不明白為什么我不能這樣做。

編碼:

library(dplyr)
library(readxl)

setwd("Z:/Reporting_Private/Tableau")
dataupl <- read_excel("Analysis Map_Tableau - Ready.xlsm", sheet = "Data")

df = dataupl

#select right columns 
df = df[,1:6]
colnames(df)=c("Office", "Employee","Territiry","Sales","Leads","Act")

#change n/a to zero
df[is.na(df)]=0

countries = df %>% select(Office) %>% distinct()
countries = as.data.frame(countries)

engine <- function(input){

  df = df %>% filter(Office==input)

  SCALESALES = scale(df$Sales)
  SCALELEADS= scale(df$Leads)
  SCALEACT= scale(df$Act)

  df = df %>% mutate(SCALESALES = SCALESALES, SCALELEADS = SCALELEADS, SCALEACT = SCALEACT)

  df$SLegend = ave(df$Sales, df$SalesLegend, FUN = min)   
  df$SLegend = ifelse(df$SLegend>0, df$SLegend,0)
  df$LLegend = ave(df$Leads, df$LeadsLegend, FUN = min)   
  df$ALegend = ave(df$Act, df$ActLegend, FUN = min)   


  #write.csv(final, file = paste0(input,".csv"))
  dftotal = data.frame()
  dftotal = rbind(dftotal,df)
}

for (i in 1:nrow(countries)){

  input = countries[i,]

  engine(input)

}

看來您可以拆分數據幀L <- split(df, df$Office) lapply(L, ...) L <- split(df, df$Office) ,然后lapply(L, ...)而不是write.csv(...)您必須返回數據幀: return(df)在你的職能。
因此,如下所示:

engine <- function(dfi) {

  SCALESALES = scale(dfi$Sales)
  SCALELEADS = scale(dfi$Leads)
  SCALEACT   = scale(dfi$Act)

  dfi = dfi %>% mutate(SCALESALES = SCALESALES, SCALELEADS = SCALELEADS, SCALEACT = SCALEACT)

  dfi$SLegend = ave(dfi$Sales, dfi$SalesLegend, FUN = min)   
  dfi$SLegend = ifelse(dfi$SLegend>0, dfi$SLegend, 0)
  dfi$LLegend = ave(dfi$Leads, dfi$LeadsLegend, FUN = min)   
  dfi$ALegend = ave(dfi$Act, dfi$ActLegend, FUN = min)   

  return(dfi)
}

L    <- split(df, df$Office)
Lnew <- lapply(L, engine)

dftotal <- Lnew[[1]]
for (i in 2:length(Lnew)) dftotal <- rbind(dftotal, Lnew[[i]])

暫無
暫無

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

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