R 中是否有比 'extract_table' 函数更整洁的方法?
Is there more tidy method than 'extract_table' function in R?
我的最终目标是让框架变得整洁 table。
这是我捕获原始 pdf 页面的图像文件。
(对不起语言,因为我现在要离开韩国)
当我使用 R 包 'tabulizer' 中的 'extract_table' 函数时,
结果就是这样
library(tabulizer)
setwd("C:/Users/user/Desktop/신규펀드/폴더/20200420/투자설명서")
pdf_file <- "K55101D20742_투자설명서_한국투자미국배당귀족증권자투자신탁UH(주식)_(20200322).pdf"
cle <- extract_tables(pdf_file,pages=47,method="stream", encoding="UTF-8")
cle
如您所见,框架不整齐或不干净。因为有很多“”和函数拆分和用线制作框架!所以每一行都被分开了。我的意思是,如果您看到 [11,] [12,] [13,] 行,在 pdf 文件中它应该只是 'one' 包含 (수수료선취-오프라인(A), 0.3500, 0.5100, 0.0300 , 0.0100, 0.9000, -, 0.9000, 1.8500, 0.9000)。但是,在 R 结果中,它被分成三行 [11,] [12,] [13,].
所以我想解决这个问题,并使结果与pdf文件完全相同。
如果你知道任何关于它的答案,请留下任何回复以帮助我。
此外,捕获的图像中未提及的另一个问题是
如果包中有误读,则合并列或行。例如,
table 0.3500 和 0.5100 中的第一个和第二个数字应该分开。然而有时它只是合并在一列中,0.35000.5100,就像那样。
我该如何解决?
感谢您的阅读。
++
dput(cle)
list(structure(c("수수료미징구-온라인-개인연금 (C-Pe)", "수수료미징구-오프라인-퇴직연금 (C-R)",
"수수료미징구-온라인-퇴직연금 (C-Re)", "수수료미징구-오프라인,직판-랩 (C-W)",
"", "수수료후취-온라인슈퍼 (S)", "", "수수료미징구-온라인슈퍼-개인연금 (S-P)",
"수수료미징구-온라인슈퍼-퇴직연금 (S-R)", "부과기준", "없음",
"없음", "없음", "없음", "", "없음", "", "없음", "없음", "매입시",
"없음", "없음", "없음", "없음", "3 년 미만 환매시", "환매금액의 0.15%",
"이내", "없음", "없음", "환매시", "없음", "없음", "없음", "없음",
"", "없음", "", "없음", "없음", "환매시"), .Dim = c(10L, 4L)),
structure(c("※ 이 투자신탁이 투자하는 모투자신탁의 수수료 현황",
"■ 한국투자 미국배당귀족 증권 모투자신탁(USD)(주식)", "구 분 부과비율 (또는 부과금액)",
"선취판매수수료 -", "후취판매수수료 -", "환매수수료 -", "",
"", "부과시기", "매입시", "환매시", "환매시"), .Dim = c(6L,
2L)), structure(c("", "", "", "", "구분", "", "", "", "",
"", "수수료선취", "-오프라인", "(A)", "수수료선취", "-온라인",
"(A-e)", "수수료선취", "", "-오프라인-", "", "", "집합",
"", "투자", "", "업자", "", "보수", "", "", "0.3500", "",
"", "0.3500", "", "", "0.3500", "", "", "", "", "판매", "",
"회사", "", "보수", "", "", "", "0.5100", "", "", "0.2550",
"", "", "0.3570", "", "", "", "", "신탁", "", "업자", "",
"보수", "", "", "", "0.0300", "", "", "0.0300", "", "", "0.0300",
"", "", "일반", "", "사무", "", "관리", "", "회사", "", "보수",
"", "0.0100", "", "", "0.0100", "", "", "0.0100", "", "부과비율 (연간, %)",
"", "", "", "기타", "총보수", "비용", "", "", "", "", "0.9000 -",
"", "", "0.6450 -", "", "", "0.7470 -", "", "", "", "", "",
"총보수", "", "<U+30FB>비용", "", "", "", "", "0.9000", "",
"", "0.6450", "", "", "0.7470", "", "", "", "(동종", "",
"유형총", "", "보수<U+30FB>", "", "비용)", "", "", "1.8500",
"", "", "1.3900", "", "", "-", "", "", "", "", "합성총",
"", "보수<U+30FB>", "", "비용", "", "", "", "0.9000", "",
"", "0.6450", "", "", "0.7470", "", "", "", "", "증권", "",
"거래", "", "비용", "", "", "", "-", "", "", "-", "", "",
"-", ""), .Dim = c(19L, 10L)))
>
更新:
df<- as.data.frame(cle[[3]])
df<- noquote(df)
library(assertr)
header<-col_concat(df[1,])
r1<-col_concat(t(df[2:10,]))
r2<-col_concat(t(df[11:13,]))
r3<-col_concat(t(df[14:16,]))
r4<-col_concat(t(df[17:19,]))
newdf<- rbind(r1,r2,r3,r4)
colnames(newdf)<- newdf[1,]
newdf<- newdf[-1,]
View(newdf)
由于第 6 列和第 7 列的值在 cle 文件中合并,因此输出 table 将少一列。
输出Table视图
我手动插入了第 7 列,代码如下:
df<- as.data.frame(cle[[3]])
df<- noquote(df)
df$V6.1<- c("",rep("", nrow(df)-1))
df<- df[c(1:6,11,7:10)]
colnames(df)<- c("V1","V2","V3","V4","V5","V6","V7","V8","V9","V10","V11")
df$V7[7]<- paste(df$V6[7])
df$V6[7]<-""
library(assertr)
header<-col_concat(df[1,])
r1<-col_concat(t(df[2:10,]))
r2<-col_concat(t(df[11:13,]))
r3<-col_concat(t(df[14:16,]))
r4<-col_concat(t(df[17:19,]))
newdf<- rbind(r1,r2,r3,r4)
colnames(newdf)<- newdf[1,]
newdf<- newdf[-1,]
newdf<- as.data.frame(newdf)
newdf[7]<-"-"
View(newdf)
结果如下 table:
我认为你可以解决这个问题。
我的最终目标是让框架变得整洁 table。
这是我捕获原始 pdf 页面的图像文件。 (对不起语言,因为我现在要离开韩国)
当我使用 R 包 'tabulizer' 中的 'extract_table' 函数时, 结果就是这样
library(tabulizer)
setwd("C:/Users/user/Desktop/신규펀드/폴더/20200420/투자설명서")
pdf_file <- "K55101D20742_투자설명서_한국투자미국배당귀족증권자투자신탁UH(주식)_(20200322).pdf"
cle <- extract_tables(pdf_file,pages=47,method="stream", encoding="UTF-8")
cle
如您所见,框架不整齐或不干净。因为有很多“”和函数拆分和用线制作框架!所以每一行都被分开了。我的意思是,如果您看到 [11,] [12,] [13,] 行,在 pdf 文件中它应该只是 'one' 包含 (수수료선취-오프라인(A), 0.3500, 0.5100, 0.0300 , 0.0100, 0.9000, -, 0.9000, 1.8500, 0.9000)。但是,在 R 结果中,它被分成三行 [11,] [12,] [13,].
所以我想解决这个问题,并使结果与pdf文件完全相同。
如果你知道任何关于它的答案,请留下任何回复以帮助我。
此外,捕获的图像中未提及的另一个问题是
如果包中有误读,则合并列或行。例如, table 0.3500 和 0.5100 中的第一个和第二个数字应该分开。然而有时它只是合并在一列中,0.35000.5100,就像那样。
我该如何解决?
感谢您的阅读。
++
dput(cle)
list(structure(c("수수료미징구-온라인-개인연금 (C-Pe)", "수수료미징구-오프라인-퇴직연금 (C-R)",
"수수료미징구-온라인-퇴직연금 (C-Re)", "수수료미징구-오프라인,직판-랩 (C-W)",
"", "수수료후취-온라인슈퍼 (S)", "", "수수료미징구-온라인슈퍼-개인연금 (S-P)",
"수수료미징구-온라인슈퍼-퇴직연금 (S-R)", "부과기준", "없음",
"없음", "없음", "없음", "", "없음", "", "없음", "없음", "매입시",
"없음", "없음", "없음", "없음", "3 년 미만 환매시", "환매금액의 0.15%",
"이내", "없음", "없음", "환매시", "없음", "없음", "없음", "없음",
"", "없음", "", "없음", "없음", "환매시"), .Dim = c(10L, 4L)),
structure(c("※ 이 투자신탁이 투자하는 모투자신탁의 수수료 현황",
"■ 한국투자 미국배당귀족 증권 모투자신탁(USD)(주식)", "구 분 부과비율 (또는 부과금액)",
"선취판매수수료 -", "후취판매수수료 -", "환매수수료 -", "",
"", "부과시기", "매입시", "환매시", "환매시"), .Dim = c(6L,
2L)), structure(c("", "", "", "", "구분", "", "", "", "",
"", "수수료선취", "-오프라인", "(A)", "수수료선취", "-온라인",
"(A-e)", "수수료선취", "", "-오프라인-", "", "", "집합",
"", "투자", "", "업자", "", "보수", "", "", "0.3500", "",
"", "0.3500", "", "", "0.3500", "", "", "", "", "판매", "",
"회사", "", "보수", "", "", "", "0.5100", "", "", "0.2550",
"", "", "0.3570", "", "", "", "", "신탁", "", "업자", "",
"보수", "", "", "", "0.0300", "", "", "0.0300", "", "", "0.0300",
"", "", "일반", "", "사무", "", "관리", "", "회사", "", "보수",
"", "0.0100", "", "", "0.0100", "", "", "0.0100", "", "부과비율 (연간, %)",
"", "", "", "기타", "총보수", "비용", "", "", "", "", "0.9000 -",
"", "", "0.6450 -", "", "", "0.7470 -", "", "", "", "", "",
"총보수", "", "<U+30FB>비용", "", "", "", "", "0.9000", "",
"", "0.6450", "", "", "0.7470", "", "", "", "(동종", "",
"유형총", "", "보수<U+30FB>", "", "비용)", "", "", "1.8500",
"", "", "1.3900", "", "", "-", "", "", "", "", "합성총",
"", "보수<U+30FB>", "", "비용", "", "", "", "0.9000", "",
"", "0.6450", "", "", "0.7470", "", "", "", "", "증권", "",
"거래", "", "비용", "", "", "", "-", "", "", "-", "", "",
"-", ""), .Dim = c(19L, 10L)))
>
更新:
df<- as.data.frame(cle[[3]])
df<- noquote(df)
library(assertr)
header<-col_concat(df[1,])
r1<-col_concat(t(df[2:10,]))
r2<-col_concat(t(df[11:13,]))
r3<-col_concat(t(df[14:16,]))
r4<-col_concat(t(df[17:19,]))
newdf<- rbind(r1,r2,r3,r4)
colnames(newdf)<- newdf[1,]
newdf<- newdf[-1,]
View(newdf)
由于第 6 列和第 7 列的值在 cle 文件中合并,因此输出 table 将少一列。
输出Table视图
我手动插入了第 7 列,代码如下:
df<- as.data.frame(cle[[3]])
df<- noquote(df)
df$V6.1<- c("",rep("", nrow(df)-1))
df<- df[c(1:6,11,7:10)]
colnames(df)<- c("V1","V2","V3","V4","V5","V6","V7","V8","V9","V10","V11")
df$V7[7]<- paste(df$V6[7])
df$V6[7]<-""
library(assertr)
header<-col_concat(df[1,])
r1<-col_concat(t(df[2:10,]))
r2<-col_concat(t(df[11:13,]))
r3<-col_concat(t(df[14:16,]))
r4<-col_concat(t(df[17:19,]))
newdf<- rbind(r1,r2,r3,r4)
colnames(newdf)<- newdf[1,]
newdf<- newdf[-1,]
newdf<- as.data.frame(newdf)
newdf[7]<-"-"
View(newdf)
结果如下 table:
我认为你可以解决这个问题。