1

私のデータフレームExpensesは以下のとおりです:

date        name           expenditure      type
23MAR2013   KOSH ENTRP     4000             COMPANY
23MAR2013   JOHN DOE       800              INDIVIDUAL
24MAR2013   S KHAN         300              INDIVIDUAL
24MAR2013   JASINT PVT LTD 8000             COMPANY
25MAR2013   KOSH ENTRPRISE 2000             COMPANY
25MAR2013   JOHN S DOE     220              INDIVIDUAL
25MAR2013   S KHAN         300              INDIVIDUAL
26MAR2013   S KHAN         300              INDIVIDUAL

以前に、 name列から繰り返しの名前とパターンの存在を特定し、それをベクトルに格納しましたNameVector。それは以下に示すとおりです。

KOSH    JOHN DOE    KHAN    JASINT

私の質問は、どのようにすべての文字列パターンをExpenses$nameベクトルNameVectorと一致させ、メイン データ フレームにカテゴリ別に出力するかです。

date        name           expenditure      type           category 
23MAR2013   KOSH ENTRP     4000             COMPANY        KOSH
23MAR2013   JOHN DOE       800              INDIVIDUAL     JOHN DOE
24MAR2013   S KHAN         300              INDIVIDUAL     KHAN          
24MAR2013   JASINT PVT LTD 8000             COMPANY        JASINT
25MAR2013   KOSH ENTRPRISE 2000             COMPANY        KOSH
25MAR2013   JOHN S DOE     220              INDIVIDUAL     JOHN DOE
25MAR2013   SALM KHAN      300              INDIVIDUAL     KHAN
26MAR2013   S KHAN         300              INDIVIDUAL     KHAN

名前のさまざまな部分をさまざまな列に取得し、name使用してパターンを一致させるために、可能なすべての区切り記号 (スペース、|、*、コンマなど) で列を分割しようとしましたが、目的の出力が得られません。データをさらに詳しく調べると、先頭に空白があることに気付き、それらを取り除きましたが、上記のように出力が得られない理由はまだわかりません。strsplit()agrep()


上記のテーブルの csv:

"Date","name","expenditure","type"
"23MAR2013","KOSH ENTRP",4000,"COMPANY"
"23MAR2013 ","JOHN DOE",800,"INDIVIDUAL"
"24MAR2013","S KHAN",300,"INDIVIDUAL"
"24MAR2013","JASINT PVT LTD",8000,"COMPANY"
"25MAR2013","KOSH ENTRPRISE",2000,"COMPANY"
"25MAR2013","JOHN S DOE",220,"INDIVIDUAL"
"25MAR2013","S KHAN",300,"INDIVIDUAL"
"26MAR2013","S KHAN",300,"INDIVIDUAL"

および計算された/識別された名前ベクトル

NameVector <- c("KOSH","JOHN DOE","KHAN","JASINT")
4

1 に答える 1

2

あなたは試すことができます

library(stringi)
pat <- paste(unlist(strsplit(NameVector, ' ')), collapse="|")
Expenses$category <- vapply(stri_extract_all_regex(Expenses$name, pat), 
           paste, collapse=' ', character(1L))
Expenses
#       date           name expenditure       type category
#1 23MAR2013     KOSH ENTRP        4000    COMPANY     KOSH
#2 23MAR2013       JOHN DOE         800 INDIVIDUAL JOHN DOE
#3 24MAR2013         S KHAN         300 INDIVIDUAL     KHAN
#4 24MAR2013 JASINT PVT LTD        8000    COMPANY   JASINT
#5 25MAR2013 KOSH ENTRPRISE        2000    COMPANY     KOSH
#6 25MAR2013     JOHN S DOE         220 INDIVIDUAL JOHN DOE
#7 25MAR2013         S KHAN         300 INDIVIDUAL     KHAN
#8 26MAR2013         S KHAN         300 INDIVIDUAL     KHAN
于 2015-03-10T05:18:35.597 に答える