我对我的问题的答案进行了编码,它是从数据导入和文本到列的后续操作(在 excel A1 = 1+1+1 和 3 中可见时)
下面的代码有效,但我想知道是否有任何方法可以改进它。我的意思是我两次导入同一张表,因为在从 Col_2 提取公式后我找不到维护其他列的方法。
所以,我有 3 列的 excel 文件。Col_1 是文本,Col_2 有简单的公式,例如 B2 = 2+2;B3 = 3+3 等... Col_3 只是为了突出我的问题。
我使用导入此文件
对于这样一个简单的任务,我的代码相当长?任何想法如何导入公式和维护其他列?
library("openxlsx")
library("splitstackshape")
library("gsub")
library("data.table")
setwd("C:/Users/ml404e/Desktop")
# read as workbook object
wb <- loadWorkbook("Book1.xlsx")
# get the 1st sheet
sheet1 <- wb$worksheets[[1]]
# get the cell formulas
sheet1$sheet_data$f
# get the df
df <- as.data.frame(sheet1$sheet_data$f)
#remove NA
df <- na.omit(df)
#split cells
df<- cSplit(df, "sheet1$sheet_data$f","+")
#remove extra string
df <- data.frame(lapply(df, function(x) {gsub("<f>", "", x) }))
df <- data.frame(lapply(df, function(x) {gsub("</f>", "", x) }))
#change columns names
setnames(df,1,"Col_2")
setnames(df,2,"Col_2_2")
#change factor to numaric
df[] <- lapply(df, as.numeric)
#get second time
df2 <- read.xlsx("Book1.xlsx")
df2$Col_2<-NULL
#combine both
df_final <- cbind(df,df2)
#get the initila order
df_final <- df_final[,c(3,1,2,4)]