ソースからオンラインでデータをスクラップして、個人に関する情報のn
行のデータフレーム(df1
)を作成しました。これは単一の文字列として提供され、単語を適切な列に分割します。値とシフトのデータフレームを置換する特定の条件が満たされている場合
情報の90%は、データフレーム(6)の適切な数の列に正しくフォーマットされますが、しばらくの間、余分な単語を含む行が文字列の先頭から4番目の単語。これらの行には7つの列があり、データフレーム内の他のすべての列からオフセットされています。ここ
は一例である:あなたがアイテム#10を添加し、余分な入力を有して見ることができる
Num Last-Name First-Name Cat. DOB Location
11 Jackson, Adam L 1982-06-15 USA
2 Pearl, Sam R 1986-11-04 UK
5 Livingston, Steph LL 1983-12-12 USA
7 Thornton, Mark LR 1982-03-26 USA
10 Silver, John RED LL 1983-09-14 USA
df1 = c(" 11 Jackson, Adam L 1982-06-15 USA",
"2 Pearl, Sam R 1986-11-04 UK",
"5 Livingston, Steph LL 1983-12-12 USA",
"7 Thornton, Mark LR 1982-03-26 USA",
"10 Silver, John RED LL 1983-09-14 USA")
、色"RED"
は、文字列の途中に挿入されます。
stringrを使用して4番目の単語にいくつの文字が含まれているかを評価するコードを実行し始めました.3以上の場合(Cat.
列の値は1〜2文字です)データフレームの最後に新しい列が作成され、値が割り当てられ、値がない場合(つまり、数値がFALSE
と評価された場合)、NA
と入力します。私はおそらくdplyrmutate
(私の個人的な快適ゾーン)に大規模なネストされたifelse
文を作成することができます確信しているが、私は私の望ましい結果を達成するために、より効率的な方法が存在する必要があります図:
Num Last-Name First-Name Cat. DOB Location Color
11 Jackson, Adam L 1982-06-15 USA NA
2 Pearl, Sam R 1986-11-04 UK NA
5 Livingston, Steph LL 1983-12-12 USA NA
7 Thornton, Mark LR 1982-03-26 USA NA
10 Silver, John LL 1983-09-14 USA RED
私がしたいです文字列の先頭から4番目の単語が3文字以上あるインスタンスを検索し、その単語または値をデータフレームの最後の新しい列に割り当て、その行の対応する値を適切に配置するために左にシフトします他の列のデータと一緒に使用します。
あなたはそれがすべて大文字である任意の基準を持っていますか? – akrun
@akrun大文字でなければならないという個人的な基準はありませんが、ソースから来るときは、文字列の先頭から4番目の値(分類カテゴリであっても、特定のインスタンスでは色)でもかまいません。どちらも大文字の値になります。 – wetcoaster