1

我对我的问题的答案进行了编码,它是从数据导入和文本到列的后续操作(在 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)]
4

0 回答 0