使用公式

时间:2018-04-10 12:01:08

标签: r dataframe openxlsx

我为我的问题编写了答案,然后从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只是为了突出我的问题。

enter image description here

我使用

导入此文件

我的代码对于这么简单的任务来说相当长吗?有关如何导入公式和维护其他列的任何想法吗?

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)]

0 个答案:

没有答案