データフレーム内のすべての文字列をいくつかの異なる値rのいずれかに変更します(重複ではありません)

JQ

(以下の「重要」の注記を参照してください-質問は同様の投稿への回答では解決されません。重複ではありません

文字列(現在は因子として)から数値(1から5)に再コード化する必要がある同じ2つのリッカート尺度を含む大量のベクトルを含むデータフレームがたくさんあります。スケールは次のとおりです。

Likert scale A:
---------------
Terrible      = 1
Below Average = 2
Average       = 3
Above Average = 4
Excellent     = 5


Likert Scale B:
---------------
Strongly disagree = 1
Somewhat disagree = 2
Meh               = 3
Somewhat agree    = 4
Strongly agree    = 5

例として、HAVE1これは、これらのリッカートパターンを持つ多くのデータセット(それぞれが異なる数のベクトルと異なるベクトル名を持つ)の1つです。

Apples        Oranges       Bananas       ServiceGood       ShortTime
Excellent     Terrible      Average       Somewhat agree    Somewhat agree
Excellent                   Above Average Strongly agree    Somewhat agree
Above Average Terrible      Below Average                   Somewhat disagree
Excellent     Average       Below Average Meh               Strongly disagree
Below Average Terrible      Above Average Somewhat agree    Meh
…             …             …             …                 …

文字列を、上記のリッカート尺度コードに相当する数値に置き換える必要があります。たとえば、の最初の5つの観測値は次のWANT1ようになります。

Apples  Oranges Bananas ServiceGood ShortTime
5       1       3       4           4
5       NA      4       5           4
4       1       2       NA          2
5       3       2       3           5
2       1       4       4           3
…       …       …       …           …

すべてのHAVEデータフレームで名前と位置が異なるため、ベクター名を呼び出す必要のない、これらの値を変更する効率的な方法を探しています何かご意見は?

重要:この問題は、「辞書スタイルで複数のアイテムを置き換える」という質問で提供されている例では解決されませんすべての回答は、ある種のエラーをスローするか、ほとんどの変数の値をNAで埋める/間違った値を置き換えます。

たとえば、次のコード...

map = setNames(c("Excellent", "Above Average", "Below Average", "Average", "Terrible"), 
               c("5", "4", "2", "3", "1"))
HAVE1[] <- map[unlist(HAVE1)]

「Terrible」にコード化されている空のセルを除いて、ファイル内のすべての値をNAに設定します。「辞書」の回答で機能する他の質問からの唯一の解決策は、質問自体で質問者によって提案された解決策です。質問者が避けたかったのは、まさにこのアプローチです。

Calum You

dplyr :: mutate_allを使用する簡単な方法は次のとおりです。str_replace空の文字列がある場所に欠落している値を挿入recodeし、テキストレベルを目的の数値レベルにすばやく交換することができます。これには、各データフレームの列の名前を知る必要はまったくありません。これは、認識されないオプションをに設定することNAで処理されることに注意してください。これにより、データにスペルミスがあることも警告されます。またmutate_at、この方法で再コーディングしたくない列が各データフレームにあるかどうかを調べることもできます。

複数のデータフレームに適用する必要があるという事実に対処するために、この関数を手動で適用するには多すぎる場合は、それらをリストの要素として保存し、次にmapリスト全体に保存します。

library(tidyverse)
df <- read_table(
"Apples        Oranges       Bananas       ServiceGood       ShortTime
Excellent     Terrible      Average       Somewhat agree    Somewhat agree
Excellent                   Above Average Strongly agree    Somewhat agree
Above Average Terrible      Below Average                   Somewhat disagree
Excellent     Average       Below Average Meh               Strongly disagree
Below Average Terrible      Above Average Somewhat agree    Meh"
)

df %>%
  mutate_all(~ str_replace(., "^$", NA_character_)) %>%
  mutate_all(
    .funs = ~ as.integer(recode(
      .x = .,
      "Terrible"      = 1,
      "Below Average" = 2,
      "Average"       = 3,
      "Above Average" = 4,
      "Excellent"     = 5,
      "Strongly disagree" = 1,
      "Somewhat disagree" = 2,
      "Meh"               = 3,
      "Somewhat agree"    = 4,
      "Strongly agree"    = 5
    ))
  )
#> # A tibble: 5 x 5
#>   Apples Oranges Bananas ServiceGood ShortTime
#>    <int>   <int>   <int>       <int>     <int>
#> 1      5       1       3           4         4
#> 2      5      NA       4           5         4
#> 3      4       1       2          NA         2
#> 4      5       3       2           3         1
#> 5      2       1       4           4         3

reprexパッケージ(v0.2.0)によって2018-05-29に作成されました

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

パンダデータフレームのいくつかの列のタイプを変更する必要があります。ilocを使用してこれを行うことはできません

分類Dev

いくつかの条件もありますが、データフレームの列の値に基づいてデータフレームのレコードをランダムに選択するにはどうすればよいですか?

分類Dev

1つの単語を除いて完全に異なる値を持つ2つのデータフレームを照合してマージするにはどうすればよいですか?10行のABCと22550行のXYZがあります

分類Dev

3つの異なる列を調べて、共通の数値を別のデータフレームの1つの列と一致させて、データをマージするにはどうすればよいですか(一致がない場合は追加します)。

分類Dev

2つの異なる列のいずれかに含まれる要素に従ってデータフレームをどのように分割しますか?

分類Dev

データフレームパンダの列をいずれかの列の値に変更します

分類Dev

いくつかの条件を使用して、異なるデータフレーム列に基づいて1つのデータフレームの列値を置き換えるにはどうすればよいですか?

分類Dev

Rで重複せずにリサイクルして、長さが異なる2つのデータフレームをマージするにはどうすればよいですか?

分類Dev

列の条件に基づいて、単一のデータフレームからいくつかの異なるデータフレームを抽出します

分類Dev

pandas Pythonを使用して、データフレーム内の文字列をいくつかの列に分割するにはどうすればよいですか?

分類Dev

列内の異なる値について2つのデータフレームを比較します

分類Dev

新しいデータフレームを作成せずに、Rのggplot2を使用して、異なるデータフレームからの2つの系列を互いにプロットするにはどうすればよいですか?

分類Dev

r2つの列のいずれかの組み合わせの重複を含むデータフレームから行を削除します

分類Dev

データフレームのリスト内の同じ列から重複するすべての値を検索してNULLに変換します

分類Dev

1つの列にすべての値があるデータフレームを複数の列があるデータフレームに変換するにはどうすればよいですか?

分類Dev

列の値(文字列)にPythonのセット内の値のいずれかが含まれている場合、データフレームの行をフィルタリングするにはどうすればよいですか?

分類Dev

列を変更せずに、データフレーム内のすべての行の値を単一の行に連結するにはどうすればよいですか?

分類Dev

特定の値に基づいてデータフレームをフィルタリングするだけでなく、パンダを使用して一意の識別子の他のすべての値を保持する方法はありますか?

分類Dev

Python:データフレームのいずれかの列に対して行に同じ値が複数あるかどうかを確認し、ある場合は、繰り返される値をnullに置き換えます

分類Dev

2つの辞書のすべてのキーを調べて、重複するすべてのアイテムを変更して、辞書のアイテムがすべて異なるようにする方法はありますか?

分類Dev

すでにいくつかの大文字の値がある場合、パンダデータフレームの列を大文字に変更するにはどうすればよいですか?

分類Dev

PySparkデータフレームに列(文字列の配列)があります。配列を分割して、配列内の文字列アイテムごとに個別の行を作成するにはどうすればよいですか?

分類Dev

データフレーム内の値の列で、その列のすべての値に対して繰り返す必要なしに、ランダムで均一な分布を生成するにはどうすればよいですか?

分類Dev

データフレーム内の列の値をマージするときに重複を削除しないのはなぜですか?

分類Dev

bashを使用して、1つの列に重複する値があり、他の列にはないデータを見つけることは可能ですか?

分類Dev

データフレーム列の結果に基づいて、結果が変更されて新しい反復値が発生するまで、後続のすべての行が反復値に等しくなります

分類Dev

Rのデータフレーム内のすべての要素の名前を簡単に変更するにはどうすればよいですか?

分類Dev

データフレーム内の他の列値に基づいて列値を変更するにはどうすればよいですか?

分類Dev

パンダデータフレームからの入力を含むsklearnclassification_reportは、「TypeError:文字列のフォーマット中にすべての引数が変換されたわけではありません」を生成します。

Related 関連記事

  1. 1

    パンダデータフレームのいくつかの列のタイプを変更する必要があります。ilocを使用してこれを行うことはできません

  2. 2

    いくつかの条件もありますが、データフレームの列の値に基づいてデータフレームのレコードをランダムに選択するにはどうすればよいですか?

  3. 3

    1つの単語を除いて完全に異なる値を持つ2つのデータフレームを照合してマージするにはどうすればよいですか?10行のABCと22550行のXYZがあります

  4. 4

    3つの異なる列を調べて、共通の数値を別のデータフレームの1つの列と一致させて、データをマージするにはどうすればよいですか(一致がない場合は追加します)。

  5. 5

    2つの異なる列のいずれかに含まれる要素に従ってデータフレームをどのように分割しますか?

  6. 6

    データフレームパンダの列をいずれかの列の値に変更します

  7. 7

    いくつかの条件を使用して、異なるデータフレーム列に基づいて1つのデータフレームの列値を置き換えるにはどうすればよいですか?

  8. 8

    Rで重複せずにリサイクルして、長さが異なる2つのデータフレームをマージするにはどうすればよいですか?

  9. 9

    列の条件に基づいて、単一のデータフレームからいくつかの異なるデータフレームを抽出します

  10. 10

    pandas Pythonを使用して、データフレーム内の文字列をいくつかの列に分割するにはどうすればよいですか?

  11. 11

    列内の異なる値について2つのデータフレームを比較します

  12. 12

    新しいデータフレームを作成せずに、Rのggplot2を使用して、異なるデータフレームからの2つの系列を互いにプロットするにはどうすればよいですか?

  13. 13

    r2つの列のいずれかの組み合わせの重複を含むデータフレームから行を削除します

  14. 14

    データフレームのリスト内の同じ列から重複するすべての値を検索してNULLに変換します

  15. 15

    1つの列にすべての値があるデータフレームを複数の列があるデータフレームに変換するにはどうすればよいですか?

  16. 16

    列の値(文字列)にPythonのセット内の値のいずれかが含まれている場合、データフレームの行をフィルタリングするにはどうすればよいですか?

  17. 17

    列を変更せずに、データフレーム内のすべての行の値を単一の行に連結するにはどうすればよいですか?

  18. 18

    特定の値に基づいてデータフレームをフィルタリングするだけでなく、パンダを使用して一意の識別子の他のすべての値を保持する方法はありますか?

  19. 19

    Python:データフレームのいずれかの列に対して行に同じ値が複数あるかどうかを確認し、ある場合は、繰り返される値をnullに置き換えます

  20. 20

    2つの辞書のすべてのキーを調べて、重複するすべてのアイテムを変更して、辞書のアイテムがすべて異なるようにする方法はありますか?

  21. 21

    すでにいくつかの大文字の値がある場合、パンダデータフレームの列を大文字に変更するにはどうすればよいですか?

  22. 22

    PySparkデータフレームに列(文字列の配列)があります。配列を分割して、配列内の文字列アイテムごとに個別の行を作成するにはどうすればよいですか?

  23. 23

    データフレーム内の値の列で、その列のすべての値に対して繰り返す必要なしに、ランダムで均一な分布を生成するにはどうすればよいですか?

  24. 24

    データフレーム内の列の値をマージするときに重複を削除しないのはなぜですか?

  25. 25

    bashを使用して、1つの列に重複する値があり、他の列にはないデータを見つけることは可能ですか?

  26. 26

    データフレーム列の結果に基づいて、結果が変更されて新しい反復値が発生するまで、後続のすべての行が反復値に等しくなります

  27. 27

    Rのデータフレーム内のすべての要素の名前を簡単に変更するにはどうすればよいですか?

  28. 28

    データフレーム内の他の列値に基づいて列値を変更するにはどうすればよいですか?

  29. 29

    パンダデータフレームからの入力を含むsklearnclassification_reportは、「TypeError:文字列のフォーマット中にすべての引数が変換されたわけではありません」を生成します。

ホットタグ

アーカイブ