データサイエンス100本ノック(構造化データ加工編)- R Part 1 (Q1 to Q20)

データサイエンス
解説:

head(df_receipt, n = 10)というコードは、df_receiptというデータフレームの最初の10行を表示するために使用されています。

Rでは、データフレームは、各列が数値、文字、因子などの異なるデータ型を持つことができる表のような構造です。構造化された形式でデータを保存し、操作するためによく使用されます。

Rのhead()関数は、データフレームの最初の数行を表示するために使用されます。デフォルトでは、データフレームの最初の6行が表示されます。しかし、n引数で表示する行数を指定することができる。この場合、n = 10は、df_receiptデータ・フレームの最初の10行を表示するために使用されます。

したがって、このコードが実行されると、出力にはdf_receiptデータ・フレームの最初の10行が表示されます。
 
解説:

head(df_receipt[c("sales_ymd", "customer_id", "product_cd", "amount")], n = 10) というコードは、df_receipt というデータフレームの最初の10行を表示するのに使われますが、"sales_ymd", "customer_id", "product_cd", "amount" の列だけを表示します。

Rでは、データフレームは、各列が数値、文字、因子などの異なるデータ型を持つことができるテーブルのような構造です。構造化された形式でデータを保存し、操作するためによく使用されます。

Rのhead()関数は、データフレームの最初の数行を表示するために使用されます。デフォルトでは、データフレームの最初の6行が表示されます。しかし、n 引数を使用して、表示する行数を指定することができます。

この場合、df_receipt[c("sales_ymd", "customer_id", "product_cd", "amount")] は、df_receipt データフレームをサブセットして、列 "sales_ymd", "customer_id", "product_cd", "amount" のみを選択するのに使用されています。c()関数は、列名をベクトルに連結するために使用されます。

したがって、このコードを実行すると、df_receiptデータフレームの最初の10行が出力されますが、"sales_ymd", "customer_id", "product_cd", "amount "の列のみが表示されます。これは、大きなデータフレームを扱うときに、カラムのサブセットにのみ焦点を当てる必要がある場合に便利です。

 

解説:

head(rename(df_receipt[c("sales_ymd", "customer_id", "product_cd", "amount")], sales_date = sales_ymd), n = 10) というコードは、df_receipt というデータフレームの最初の10行を表示するために使用しますが、列 "sales_ymd", "customer_id", "product_cd" および "amount" だけを見せて、列 "sales_ymd" を "sales_date" に名前を変えています。

Rでは、データフレームは、各列が数値、文字、因子などの異なるデータ型を持つことができるテーブルのような構造である。構造化された形式でデータを保存し、操作するためによく使用されます。

Rのhead()関数は、データフレームの最初の数行を表示するために使用されます。デフォルトでは、データフレームの最初の6行が表示されます。しかし、引数nで表示する行数を指定することができます。

Rのrename()関数は、データフレーム内の列の名前を変更するために使用されます。この場合、"sales_ymd "という列を "sales_date "にリネームするために使用されます。

このコードでは、df_receipt[c("sales_ymd", "customer_id", "product_cd", "amount")] を使って、df_receipt データフレームをサブセットして、列 "sales_ymd", "customer_id", "product_cd", "amount" のみを選択しています。c()関数は、列名をベクトルに連結するために使用される。

次に、rename(data_frame, new_column_name = old_column_name) という構文で、サブセットされたデータフレームに rename() 関数が適用されます。その結果、df_receipt[c("sales_ymd", "customer_id", "product_cd", "amount")] と同じ行と列を持つデータフレームになりますが、列 "sales_ymd" は "sales_date" に改名されています。

最後に、名前を変更したデータフレームにhead()関数を適用して、最初の10行を表示します。

したがって、このコードを実行すると、出力にはdf_receiptデータフレームの最初の10行が表示されますが、列 "sales_date", "customer_id", "product_cd", "amount "のみ表示され、列 "sales_ymd "は "sales_date "に変更されます。

 

解説:

df_receipt[c("sales_ymd", "customer_id", "product_cd", "amount")] %>% filter(customer_id == "CS018205000001") というコードを使って、df_receipt データフレームをサブセットして "sales_ymd" 列のみを選択します。"customer_id"、"product_cd"、"amount "の3つのカラムを持つデータフレームを作成し、"customer_id "カラムが "CS018205000001 "と同じ行のみを含むようにフィルターします。

Rでは、データフレームはテーブルのような構造で、各カラムは数値、文字、因子など異なるデータ型を持つことができます。構造化された形式でデータを保存し、操作するためによく使用されます。

Rの%>%演算子はパイプ演算子と呼ばれ、複数の関数を連鎖させて1つの式にするのに使われます。この例では、df_receipt[c("sales_ymd", "customer_id", "product_cd", "amount")] の出力を filter() 関数に渡すために使用されています。

Rのfilter()関数は、データフレームから特定の条件を満たす行を選択するために使用されます。この場合、"customer_id "カラムが "CS018205000001 "と等しい行のみを含むようにデータフレームをフィルタリングするために使用されます。

したがって、このコードを実行すると、"sales_ymd", "customer_id", "product_cd", "amount "のカラムのみを含み、"customer_id" カラムが "CS018205000001" と同じ行のみを含むデータフレームを出力します。これは、大きなデータフレームを分析するときに、特定の条件を満たす行のサブセットにのみ焦点を当てる必要がある場合に便利です。
 
解説:

df_receipt[c("sales_ymd", "customer_id", "product_cd", "amount")] %>% filter(customer_id == "CS018205000001" & amount >= 1000) というコードを使って、df_receipt データフレームをサブセットして、列 "sales_ymd" だけを選択します。"customer_id"、"product_cd"、"amount "の3つのデータフレームを作成し、"customer_id "列が "CS018205000001"、"amount "列が1000以上の行のみを含むようにフィルターをかける。

Rでは、データフレームはテーブルのような構造で、各カラムは数値、文字、因子など異なるデータ型を持つことができます。構造化された形式でデータを保存し、操作するためによく使用されます。

Rの%>%演算子はパイプ演算子と呼ばれ、複数の関数を連鎖させて1つの式にするのに使われます。この例では、df_receipt[c("sales_ymd", "customer_id", "product_cd", "amount")] の出力を filter() 関数に渡すために使用されています。

Rのfilter()関数は、データフレームから特定の条件を満たす行を選択するために使用されます。この場合、"customer_id" 列が "CS018205000001" と等しく、かつ "amount" 列が 1000 以上の行のみを含むようにデータフレームをフィルターするために使用されます。2つの条件を組み合わせるには、&演算子が使用されます。

したがって、このコードを実行すると、"sales_ymd", "customer_id", "product_cd", "amount "のカラムのみを含むデータフレームが出力され、"customer_id" カラムが "CS018205000001" と等しく "amount" カラムが 1000 以上の行のみが含まれます。これは、大きなデータフレームを分析するときに、特定の条件を満たす行のサブセットにのみ焦点を当てる必要がある場合に便利です。
 
解説:

df_receipt[c("sales_ymd", "customer_id", "product_cd", "quantity", "amount")] %>% filter(customer_id == "CS018205000001" & (amount >= 1000 | quantity >= 5)) というコードを使用して、df_receipt データフレームをサブセットして、列 "sales_ymd", "customer_id", "product_cd" のみ選択します。"quantity"、"amount "の3つのデータフレームを作成し、"customer_id "カラムが "CS018205000001 "と等しく、"amount "カラムが1000以上か、"quantity "カラムが5以上となる行のみを含むようにフィルターします。

Rでは、データフレームは、各列が数値、文字、因子などの異なるデータ型を持つことができる表のような構造です。構造化されたフォーマットでデータを保存し、操作するためによく使われます。

Rの%>%演算子はパイプ演算子と呼ばれ、複数の関数を連鎖させて1つの式にするのに使われます。この例では、df_receipt[c("sales_ymd", "customer_id", "product_cd", "quantity", "amount")] の出力を filter() 関数に渡すために使用されています。

Rのfilter()関数は、データフレームから特定の条件を満たす行を選択するために使用されます。この場合、"customer_id" カラムが "CS018205000001" と等しく、かつ "amount" カラムが 1000 以上または "quantity" カラムが 5 以上の行のみを含むようにデータフレームをフィルターするために使用されます。2つの条件を組み合わせるには&演算子が、OR条件を指定するには|演算子が使用されます。

したがって、このコードを実行すると、「sales_ymd」「customer_id」「product_cd」「quantity」「amount」の列のみを含むデータフレームが出力され、「customer_id」列が「CS018205000001」と同じで「umount」列が1000以上または「quantity」列が5以上ある行のみが含まれます。これは、大きなデータフレームを分析するときに、特定の条件を満たす行のサブセットにのみ焦点を当てる必要がある場合に便利です。
 
解説:

このコードは、Rのdplyrパッケージを使って、df_receiptというデータフレームを操作しています。以下、コードの内訳です。

df_receipt[c("sales_ymd", "customer_id", "product_cd", "amount")]: これは、df_receiptデータフレームを、"sales_ymd", "customer_id", "product_cd", "amount "のカラムのみを含むようにサブセットしています。

%>%: これはdplyrのパイプ演算子で、複数のデータ操作関数を連結することができます。

filter(customer_id == "CS018205000001" & between(amount, 1000, 2000)): これは、顧客IDが "CS018205000001 "で、金額が1000から2000の間の行だけを含むように、データフレームをフィルタリングしています。

つまり、このコードは、df_receipt データフレームをサブセットして、"sales_ymd", "customer_id", "product_cd", "amount" 列のみを含むようにし、得られたデータフレームを、顧客 ID が "CS018205000001" で金額が 1000 から 2000 までの行のみを含むようにフィルタリングしていることになる。
 
解説:

このコードは、Rのdplyrパッケージを使って、df_receiptというデータフレームを操作しています。以下、コードの内訳です。

df_receipt[c("sales_ymd", "customer_id", "product_cd", "amount")]: これは、df_receiptデータフレームを、"sales_ymd", "customer_id", "product_cd", "amount "のカラムのみを含むようにサブセットしています。

%>%: これはdplyrのパイプ演算子で、複数のデータ操作関数を連結することができます。

filter(customer_id == "CS018205000001" & product_cd != "P071401019"): これは、顧客IDが "CS018205000001 "で、商品コードが "P0714019 "と等しくない行のみを含むようにデータフレームをフィルタリングしています。

つまり、このコードはdf_receiptデータフレームをサブセットして、列 "sales_ymd", "customer_id", "product_cd", "amount "のみを含むようにし、得られたデータフレームを顧客IDが "CS0182050001 "で商品コードが "P0714019 "と同じではない行のみを含むようにフィルターにかけていることになる。
 
解説:

このコードは、Rのdplyrパッケージを使って、df_storeというデータフレームを操作しています。以下、コードの内訳です。

%>%: これはdplyrのパイプ演算子で、複数のデータ操作関数を連結することができる。

filter(prefecture_cd != "13" & floor_area <= 900): これは、都道府県コードが "13 "でなく、床面積が900以下である行だけを含むようにデータフレームをフィルタリングしています。

つまり、このコードはdf_storeデータフレームをフィルタリングして、都道府県コードが "13 "でなく、床面積が900以下である行のみを含むようにしています。
 
解説:

このコードは、Rのdplyrパッケージを使って、df_storeというデータフレームを操作しています。以下、コードの内訳を説明します。

df_storeです。これは、使用されているデータフレームです。

%>%: これはdplyrのパイプ演算子で、複数のデータ操作関数を連結することができる。

filter(startsWith(store_cd, "S14")): store_cd列が "S14 "で始まる行のみを含むようにデータフレームをフィルタリングしています。

head(., n = 10): head()関数を使用して、結果のデータフレームの最初の10行を選択しています。

つまり、このコードは、df_storeデータフレームをフィルタリングして、store_cdカラムが "S14 "で始まる行のみを含むようにし、head()関数を使用して、結果のデータフレームの最初の10行を選択しています。

 

解説:

このコードは、Rのdplyrパッケージを使って、df_customerというデータフレームを操作しています。以下、コードの内訳です。

df_customer: df_customer:これは使用されているデータフレームです。

%>%: これはdplyrのパイプ演算子で、複数のデータ操作関数を連結することができる。

filter(endsWith(customer_id, "1"))。customer_idカラムの末尾が "1 "の行のみを含むようにデータフレームをフィルタリングしています。

head(., n = 10): head()関数を使用して、結果のデータフレームの最初の10行を選択しています。

つまり、このコードは、df_customerデータフレームをフィルタリングして、customer_idカラムが "1 "で終わる行のみを含むようにし、head()関数を使用して結果のデータフレームの最初の10行を選択していることになります。
 
解説:

このコードは、Rのdplyrパッケージを使って、df_storeというデータフレームを操作しています。以下、コードの内訳を説明します。

df_storeです。これは、使用されているデータフレームです。

%>%: これはdplyrのパイプ演算子で、複数のデータ操作関数を連結することができる。

filter(grepl("横浜市", address)): 住所欄に「横浜市」という文字列が含まれる行だけを含むように、データフレームをフィルタリングしています。grepl()関数は、address列の各要素にパターン "横浜市 "があるかどうかを示す論理ベクトルを返します。

つまり、このコードはdf_storeデータフレームをフィルタリングして、アドレスカラムに "横浜市 "という文字列が含まれる行のみを含むようにしているのです。
 
解説:

このコードは、Rのdplyrパッケージを使って、df_customerというデータフレームを操作しています。以下、コードの内訳です。

df_customer: df_customer:これは使用されているデータフレームです。

%>%: これはdplyrのパイプ演算子で、複数のデータ操作関数を連結することができる。

filter(grepl("^[A-F]", status_cd)): これは、status_cd列がA、B、C、D、E、Fの文字で始まる行だけを含むようにデータフレームをフィルタリングしている。grepl()関数は、正規表現「^[A-F]」がstatus_cd列のそれぞれの要素にマッチするかどうかを示す論理ベクトルを返す。正規表現"^[A-F]"は、A、B、C、D、EまたはFで始まるすべての文字列にマッチする。

head(., n = 10): これは、head()関数を使用して、結果のデータフレームの最初の10行を選択しています。

つまり、このコードは、df_customerデータフレームをフィルタリングして、status_cdカラムがA、B、C、D、E、Fで始まる行のみを含むようにし、head()関数を使用して結果のデータフレームの最初の10行を選択しているのです。
 
解説:

このコードは、Rのdplyrパッケージを使って、df_customerというデータフレームを操作しています。以下、コードの内訳です。

df_customer:これは使用されているデータフレームです。

%>%: これはdplyrのパイプ演算子で、複数のデータ操作関数を連結することができる。

filter(grepl("[1-9]$", status_cd)): これは、status_cd列の末尾が1~9の数字である行のみを含むようにデータフレームをフィルタリングしています。grepl()関数は、正規表現「[1-9]$」がstatus_cd列の各要素に一致するかどうかを示す論理ベクトルを返す。正規表現「[1-9]$」は、1~9の数字で終わる文字列にマッチする。

head(., n = 10)を使用しています。これは、head()関数を使用して、結果のデータフレームの最初の10行を選択しています。

つまり、このコードは、df_customerデータフレームをフィルタリングして、status_cdカラムの末尾が1~9の数字である行のみを含むようにし、head()関数を使用して、結果のデータフレームの最初の10行を選択していることになります。
 
解説:

このコードは、Rのdplyrパッケージを使って、df_customerというデータフレームを操作しています。以下、コードの内訳です。

df_customer:これは使用されているデータフレームです。

%>%: これはdplyrのパイプ演算子で、複数のデータ操作関数を連結することができる。

filter(grepl("^[A-F].*[1-9]$", status_cd)): これは、status_cd列がA、B、C、D、E、Fのいずれかの文字で始まり、1~9の数字で終わる行のみを含むようにデータフレームをフィルタリングしています。grepl() 関数は、正規表現 "^[A-F].[1-9]$" が status_cd 列の各要素に一致するかどうかを示す論理ベクトルを返す。正規表現"^[A-F].[1-9]$"は、文字A、B、C、D、E、Fで始まり、0文字以上の任意の型が続き、1〜9までの数字で終わる文字列に一致する。

head(., n = 10): これは、head()関数を使用して、結果のデータフレームの最初の10行を選択しています。

つまり、このコードは、df_customerデータフレームをフィルタリングして、status_cd列がA、B、C、D、EまたはFの文字で始まり、1~9の数字で終わる行だけを含むようにし、head()関数を使用して結果のデータフレームの最初の10行を選択していることになります。
 
解説:

このコードは、Rのdplyrパッケージを使って、df_storeというデータフレームを操作しています。以下、コードの内訳を説明します。

df_store : これは、使用されているデータフレームです。

%>%: これはdplyrのパイプ演算子で、複数のデータ操作関数を連結することができる。

filter(grepl("^[0-9]{3}-[0-9]{3}-[0-9]{4}$", tel_no)): これは、tel_noカラムが特定の電話番号形式に一致する行のみを含むようにデータフレームをフィルタリングしています。grepl()関数は、正規表現"^[0-9]{3}-[0-9]{3}-[0-9]{4}$"がtel_no列の各要素に一致するかどうかを示す論理ベクトルを返す。正規表現 "^[0-9]{3}-[0-9]{3}-[0-9]{4}$" は、3桁で始まり、ハイフンが続き、さらに3桁、ハイフンが続き、最後に4桁の文字列にマッチします。

head(.) : これは、head()関数を使用して、結果のデータフレームの最初の6行を選択しています。

つまり、このコードは、df_storeデータフレームをフィルタリングして、tel_noカラムが特定の電話番号フォーマットに一致する行のみを含むようにし、head()関数を使用して結果のデータフレームの最初の6行を選択しているのです。
 
解説:

このコードは、df_customerデータフレームをbirth_day列で昇順にソートし、head()関数を用いて結果のデータフレームの最初の10行を選択しています。以下、コードの内訳を紹介します。

df_customer: これが使用されているデータフレームです。

[order(df_customer$birth_day),] : これは、df_customerデータフレームをサブセットしてすべての列を含むようにし、birth_day列の昇順で行をソートしています。order() 関数は、birth_day 列を昇順にソートするインデックスのベクトルを返します。これらのインデックスをデータフレームの行に [ 演算子 ] で適用すると、データフレームは誕生日カラムでソートされます。

head(., n = 10): head()関数を用いて、出来上がったデータフレームの最初の10行を選択しているところです。

つまり、このコードはdf_customerデータフレームをbirth_day列で昇順にソートし、head()関数を使用して結果のデータフレームの最初の10行を選択していることになります。このコードは、df_customerデータフレームの中で最も古い顧客を素早く確認したい場合に便利です。
 
解説:

このコードは、df_customerデータフレームをbirth_day列で降順にソートし、head()関数を使用して結果のデータフレームの最初の10行を選択しています。以下、コードの内訳を紹介します。

df_customer: これが使用されているデータフレームです。

[order(df_customer$birth_day, decreasing = TRUE), ]: これは、df_customer データフレームをサブセットして、すべての列を含むようにしますが、birth_day 列で行を降順にソートしています。order() 関数は、デフォルトでは birth_day 列を昇順でソートするインデックスのベクトルを返しますが、decreasing = TRUE を設定することで、代わりに降順でソートすることができます。これらのインデックスをデータフレームの行に [ 演算子 ] で適用すると、データフレームは birth_day 列で降順にソートされます。

head(., n = 10): head() : 出来上がったデータフレームの最初の10行を選択しているところです。

つまり、このコードはdf_customerデータフレームをbirth_dayカラムで降順にソートし、head()関数を使用して結果のデータフレームの最初の10行を選択していることになります。このコードは、df_customerデータフレームの中で最も若い顧客を素早く確認したい場合に便利です。
 
解説:

このコードは、df_receipt データフレームから customer_id と amount という列を選択し、ranking という新しい列を追加して、取引金額による各顧客のランキングを示します(最も高い金額をランキング 1 とします)。以下、コードの内訳を紹介します。

df_receipt[c("customer_id", "amount")]: これは、df_receiptデータフレームをサブセットして、customer_idとamountカラムのみを含むようにしたものです。

%>%: これはパイプ演算子で、前の演算の出力を次の演算の入力として渡します。

mutate(ranking = min_rank(desc(amount))): これは、データフレームにrankingという新しい列を追加するもので、取引額による各顧客の順位を示しています。dplyrパッケージのmin_rank()関数は、ベクトル内の各値の最小順位を計算し、同点は任意に解消される。この関数を、マイナス(desc()関数)を取った後の金額列に対して、最高値のランクが1になるように適用することで、取引金額による顧客のランキングを得ることができます。

arrange(ranking) : データフレームをランキングの列で昇順にソートしています。

slice(1:10) : slice()関数を使用して、結果のデータフレームの上位10行を選択しています。

つまり、このコードは、df_receipt データフレームから customer_id と amount 列を選択し、ranking という新しい列を追加して、取引金額による各顧客のランキングを示し、ranking 列によってデータフレームをソートし、結果のデータフレームの上位10行を選択しています。このコードは、df_receiptデータ・フレームの取引金額による上位10人の顧客を素早く確認したい場合に便利です。
 
解説:

このコードは、"customer_id "と "amount "の列を含むdf_receiptというデータフレームに対して一連の処理を実行します。

以下、このコードが何をするのか、ステップ・バイ・ステップで説明します。

df_receipt[c("customer_id", "amount")] : df_receiptデータフレームから "customer_id "と "amount "のカラムのみを選択します。結果のデータフレームには、この2つのカラムだけが含まれます。

%>%: これはRのパイプ演算子で、データフレームに対する複数の操作を連鎖させるために使用されます。ある操作の出力は、次の操作の入力として渡されます。

mutate(ranking = row_number(desc(amount))): mutate関数を使って、データフレームに "ranking "という新しい列を作成します。ranking」列は「amount」列を基準とし、「amount」の最高値を「1」、2番目に高い値を「2」、といった具合にランク付けされる。desc関数は、"amount "カラムを降順にソートするために使用される。

arrange(ranking):データフレームを "ranking "カラムで昇順(1~n)にソートします。

slice(1:10) : ソートされたデータフレームの最初の10行を選択する(すなわち、"amount "値とそれに対応する "customer_id "値が最も大きい10行を選択する)。slice関数は、データフレームから行をサブセットするために使用されます。

要約すると、このコードは、データフレームから「customer_id」と「amount」列を選択し、「amount」値を降順でランク付けし、ランクによってデータフレームをソートし、上位10行(すなわち、「amount」値が最も高い10人の顧客)を選択する。

 

Comment