私は3列で始まるCSVを持っています。 Costs、Cost列、およびKeyword列の累積パーセンテージ列。 Rスクリプトは小さなファイルで動作しますが、実際のファイル(100万行)をフィードすると完全に終了しません。このスクリプトをより効率的にする手助けができますか? Token.Countは作成に問題があるものです。ありがとうございました!トークンの単語を数える最も効率的な方法
# Token Histogram
# Import CSV data from Report Downloader API Feed
Mydf <- read.csv("Output_test.csv.csv", sep=",", header = TRUE, stringsAsFactors=FALSE)
# Helps limit the dataframe according the HTT
# Change number to:
# .99 for big picture
# .8 for HEAD
limitor <- Mydf$CumuCost <= .8
# De-comment to ONLY measure TORSO
#limitor <- (Mydf$CumuCost <= .95 & Mydf$CumuCost > .8)
# De-comment to ONLY measure TAIL
#limitor <- (Mydf$CumuCost <= 1 & Mydf$CumuCost > .95)
# De-comment to ONLY measure Non-HEAD
#limitor <- (Mydf$CumuCost <= 1 & Mydf$CumuCost > .8)
# Creates a column with HTT segmentation labels
# Creates a dataframe
HTT <- data.frame()
# Populates dataframe according to conditions
HTT <- ifelse(Mydf$CumuCost <= .8,"HEAD",ifelse(Mydf$CumuCost <= .95,"TORSO","TAIL"))
# Add the column to Mydf and rename it HTT
Mydf <- transform(Mydf, HTT = HTT)
# Count all KWs in account by using the dimension function
KWportfolioSize <- dim(Mydf)[1]
# Percent of portfolio
PercentofPortfolio <- sum(limitor)/KWportfolioSize
# Length of Keyword -- TOO SLOW
# Uses the Tau package
# My function takes the row number and returns the number of tokens
library(tau)
Myfun = function(n) {
sum(sapply(Mydf$Keyword.text[n], textcnt, split = "[[:space:][:punct:]]+", method = "string", n = 1L))}
# Creates a dataframe to hold the results
Token.Count <- data.frame()
# Loops until last row and store it in data.frame
for (i in c(1:dim(Mydf)[1])) {Token.Count <- rbind(Token.Count,Myfun(i))}
# Add the column to Mydf
Mydf <- transform(Mydf, Token.Count = Token.Count)
# Not quite sure why but the column needs renaming in this case
colnames(Mydf)[dim(Mydf)[2]] <- "Token.Count"
あなたはサンプルデータの一部にリンクすることができますか?あなたが速いかどうかを確かめるために、あなたのものに対して自分の方法をテストすることができるように、それを合成だけで十分に代表してください。 –
CumuCost \tコスト\t Keyword.text 0.004394288 \t 678.5 \t北+顔+出口 0.006698245 \t 80.05 \tのKinectセンサ 0.008738991 \t 79.51 \t Xボックス360 250 – datayoda
'data.frame':74231台のOBS。 5変数のうち $ CumuCost:num 0.00439 0.0067 0.00874 0.01067 0.01258 ... $費用:num 1678 880 780 736 731 ... $ Keyword.text:chr "north + face + outlet" "kinect sensor" "xボックス360 250 "... $ HTT:ファクタw/1レベル" HEAD ":1 1 1 1 1 1 1 1 1 1 ... $ Token.Count:int 3 2 4 1 4 2 2 2 2 1 ... – datayoda