我为我的问题编写了答案,然后从Data import and text to column (when in excel A1 = 1+1+1 and 3 is visible)
进行跟进下面的代码有效,但我想知道是否有任何方法可以改进它。我的意思是我导入相同的工作表两次,因为我从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)]