【发布时间】:2019-05-24 02:07:27
【问题描述】:
我想在 for 循环中执行几个命令
- 忽略列下的第一行
- 将所有列名更改为小写并消除单词之间的所有空格(如果有的话)
- 忽略几列并保留其余列
- 对 excel 文件中的所有工作表执行 rbind
我已经这样做了
library(tidyverse)
library(readxl)
library(xlsx)
library(reshape2)
setwd("D:/Plan")
file<-"Plan.xlsx"
excel_sheets(file)
sheet=excel_sheets(file)
for (i in 1:1) {
file=read_excel(file, sheet=sheet[i])
file<-file[-1,]
judul=colnames(file)
judul=tolower(judul)
judul=gsub(' ','',judul)
colnames(file)=judul
file %>% filter(!is.na(promo))
file=file %>% filter(!is.na(promo))
data=file[,names(file) %in% c("promo","startdate","enddate","sku","marketplacename","diskon","stok")]
}
out=data
for (i in 2:2) {
file=read_excel(file, sheet=sheet[i])
file<-file[-1,]
judul=colnames(file)
judul=tolower(judul)
judul=gsub(' ','',judul)
colnames(file)=judul
file %>% filter(!is.na(promo))
file=file %>% filter(!is.na(promo))
data=file[,names(file) %in% c("promo","startdate","enddate","sku","marketplacename","diskon","stok")]
x<-data
out=rbind(out,x)
}
此代码只是包含 2 张工作表的文件 excel 的示例。真正的文件是一个有几张纸的文件,但我想做这些订单而不管纸的数量,所以我不会每次在文件中找到不同数量的纸时都编辑脚本。如何做到这一点?
【问题讨论】:
-
你为什么不做
length(excel_sheet(filename))并从1循环到这个号码?然后将结果保存在一个列表中并在循环外 rbind。 -
怎么办? x
-
我回答了