【发布时间】:2019-04-12 22:10:07
【问题描述】:
当我在最后运行保存为 csv 的代码时,一切运行正常。这意味着我按国家/地区过滤我的数据集做一些延续并将其保存为国家/地区文件。 当我尝试 rbind 我的数据集时,我什么也没收到。我尝试了不同的解决方案,但没有任何效果。显然我不明白为什么我不能 rbind。
代码:
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, ...)而不是write.csv(...)你必须在你的函数中返回数据框:return(df)。
标签: r function loops append rbind