別のデータフレームの一連のルールに基づいて、データフレームに一連の変数を作成します

カルボ

質問は少し一般的に聞こえますが、例ははるかに明確になると思います。

私は次の2つのデータフレームを持っています

data1

group1     group2       group3     Level 
cat         cat          dog        1
dog         parrot       cat        1
mouse       dolphin      dolphin    1
red         blue         blue       2
green       yellow       green      2
black       purple       cat        2

data2

var1        level    Score
cat           1        1
dog           1        1
mouse         1        1
dolphin       1        0
parrot        1        1
red           2        1
blue          2        1
green         2        1
purple        2        1
cat           2        0
black         2        0
yellow        2        1

3つの新しい列(group1、group2、group3ごとに1つ)を組み込んだdata1を、「level」のレベルに応じてdata2の「score」列にある値で変更したいと思います(レベルは係数です)。だから基本的に私はこのようなものを手に入れたいです:

group1     group2       group3     Level      var1     var2     var3
cat         cat          dog        1          1        1        1
dog         parrot       cat        1          1        1        1
mouse       dolphin      dolphin    1          1        0        0
red         blue         blue       2          1        1        1
green       yellow       green      2          1        1        1
black       purple       cat        2          0        1        0

サンプルデータ

df1 <- structure(list(
  group1 = c("cat", "dog", "mouse", "red", "green", "black"),
  group2 = c("cat", "parrot", "dolphin", "blue", "yellow", "purple"),
  group3 = c("dog", "cat", "dolphin", "blue", "green", "cat"),
  Level = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("1", "2"), class = "factor")),
  row.names = c(NA, -6L), class = "data.frame")

df2 <- structure(list(
  var1 = c("cat", "dog", "mouse", "dolphin", "parrot", "red", "blue", "green", "purple", "cat", "black", "yellow"),
  level = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("1", "2"), class = "factor"),
  Score = c(1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L)),
  row.names = c(NA, -12L), class = "data.frame")
akrun

最初のデータセットを「長い」形式にピボットし、2番目のデータセットと結合してから、「広い」形式に戻すことができます。

library(dplyr)
library(tidyr)
library(stringr)
df1 %>%
    mutate(rn = row_number()) %>%
    pivot_longer(cols  = -c(rn, Level), values_to = 'var1') %>% 
    rename(level = Level) %>% 
    left_join(df2) %>% 
    mutate(name = str_replace(name, 'group', 'varn')) %>% 
    na.omit %>%
    select(-level, -var1) %>% 
    pivot_wider(names_from = name, values_from = Score, values_fill = list(Score = 0)) %>% 
    select(-rn) %>% 
    bind_cols(df1, .)
#   group1  group2  group3 Level varn1 varn2 varn3
#1    cat     cat     dog     1     1     1     1
#2    dog  parrot     cat     1     1     0     1
#3  mouse dolphin dolphin     1     1     0     0
#4    red    blue    blue     2     1     1     1
#5  green  yellow   green     2     1     0     1
#6  black  purple     cat     2     0     1     0

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

一連の条件に基づいて、データフレームの値を他のデータフレームの値に置き換えます

分類Dev

他のデータフレームからの一致する値に基づいて、データフレームに新しい変数を作成する

分類Dev

一意の値を使用して、別のデータフレームに基づいてデータフレームを作成します

分類Dev

別のデータフレームforループの条件に基づいて新しいデータフレームを作成します

分類Dev

dplyrデータフレームの単一の列に基づいて複数の列を変更します

分類Dev

別のデータフレームとの一致に基づいてデータフレームに新しいブール列を作成すると、「置換にはx行、データにはy」というRエラーが発生します。

分類Dev

別のデータフレームに基づいて新しいデータフレームを作成する

分類Dev

別のデータフレームの値に基づいてデータフレームを更新します

分類Dev

既存の変数に基づいてデータフレームに新しい変数を作成します

分類Dev

別のデータフレームとの一致に基づいて、データフレームに新しい列を作成する

分類Dev

SparkデータフレームGroupbyを一連のデータフレームに変換します

分類Dev

Pysparkは、データフレームgroupByに基づいて複数のファイルを作成します

分類Dev

データフレームに基づいて2つの変数の棒グラフを作成します

分類Dev

他のデータフレームに基づいて、数値ベクトルのnames()をある変数から別の変数に変更します

分類Dev

別のデータフレームに基づいてグループごとに新しいデータフレームを作成する

分類Dev

Rの別のデータフレーム内の列に基づいてデータフレームから変数を削除します

分類Dev

既存の行に基づいてデータフレームを連結する

分類Dev

別のデータフレームの値に基づいて、複数の列を作成してループを設定します

分類Dev

Rの別のデータフレームの別の列に基づいて、あるデータフレームの列を作成します

分類Dev

Rの使用-別のデータフレームのグループ最大値に基づいてデータフレームを再形成します

分類Dev

別の変数に基づいて pandas データフレームに変数を作成する方法

分類Dev

1 つのデータフレームの 2 つの変数を「回答キー」データフレームの「キー」に一致させることに基づいて、「回答キー」データフレームから値を取得します。

分類Dev

別のデータフレームのセル参照に基づいて、1つのデータフレームの値を削除します

分類Dev

R:別のデータフレームの一致する行に基づいて列を更新します

分類Dev

一連のdictとconcatをデータフレームに変換します

分類Dev

別のデータフレームに基づいてアイテムをグループ化するデータフレームを構築します

分類Dev

一連の条件に基づいてパンダデータフレームから値を取得する

分類Dev

一意の行に基づいてPythonデータフレームを連結する

分類Dev

pandas データフレームの条件に基づいてグループの列を作成します

Related 関連記事

  1. 1

    一連の条件に基づいて、データフレームの値を他のデータフレームの値に置き換えます

  2. 2

    他のデータフレームからの一致する値に基づいて、データフレームに新しい変数を作成する

  3. 3

    一意の値を使用して、別のデータフレームに基づいてデータフレームを作成します

  4. 4

    別のデータフレームforループの条件に基づいて新しいデータフレームを作成します

  5. 5

    dplyrデータフレームの単一の列に基づいて複数の列を変更します

  6. 6

    別のデータフレームとの一致に基づいてデータフレームに新しいブール列を作成すると、「置換にはx行、データにはy」というRエラーが発生します。

  7. 7

    別のデータフレームに基づいて新しいデータフレームを作成する

  8. 8

    別のデータフレームの値に基づいてデータフレームを更新します

  9. 9

    既存の変数に基づいてデータフレームに新しい変数を作成します

  10. 10

    別のデータフレームとの一致に基づいて、データフレームに新しい列を作成する

  11. 11

    SparkデータフレームGroupbyを一連のデータフレームに変換します

  12. 12

    Pysparkは、データフレームgroupByに基づいて複数のファイルを作成します

  13. 13

    データフレームに基づいて2つの変数の棒グラフを作成します

  14. 14

    他のデータフレームに基づいて、数値ベクトルのnames()をある変数から別の変数に変更します

  15. 15

    別のデータフレームに基づいてグループごとに新しいデータフレームを作成する

  16. 16

    Rの別のデータフレーム内の列に基づいてデータフレームから変数を削除します

  17. 17

    既存の行に基づいてデータフレームを連結する

  18. 18

    別のデータフレームの値に基づいて、複数の列を作成してループを設定します

  19. 19

    Rの別のデータフレームの別の列に基づいて、あるデータフレームの列を作成します

  20. 20

    Rの使用-別のデータフレームのグループ最大値に基づいてデータフレームを再形成します

  21. 21

    別の変数に基づいて pandas データフレームに変数を作成する方法

  22. 22

    1 つのデータフレームの 2 つの変数を「回答キー」データフレームの「キー」に一致させることに基づいて、「回答キー」データフレームから値を取得します。

  23. 23

    別のデータフレームのセル参照に基づいて、1つのデータフレームの値を削除します

  24. 24

    R:別のデータフレームの一致する行に基づいて列を更新します

  25. 25

    一連のdictとconcatをデータフレームに変換します

  26. 26

    別のデータフレームに基づいてアイテムをグループ化するデータフレームを構築します

  27. 27

    一連の条件に基づいてパンダデータフレームから値を取得する

  28. 28

    一意の行に基づいてPythonデータフレームを連結する

  29. 29

    pandas データフレームの条件に基づいてグループの列を作成します

ホットタグ

アーカイブ