複数の列と行の基準に基づいてRデータフレームを展開します

ティラガラガヴァン

Rスタジオに次のデータフレームがあります

 DF1<-data.frame('X_F'=c(1,2,3,4,5, NA, NA, NA, 1,2,3,4,5), "X_A"=c(.1,.2,.3,.4,.5, NA, NA, NA, .2,.3,.4, .5,.6),"Y_F"=c(2,3,5,NA, 7, 1,3, 4, 1,NA,3,4,5), "Y_A"=c(.2,.3,.4,NA, .7, .1,.2,.7,.1,NA, .3,.4,.5),'ID'=c("A", "A", "A", "A", "A", "B", "B", "B", "C", "C", "C","C",'C'))

データフレームは、5つの列(各セットを識別するID列)と2つのパラメーターセット(X_F、Y_F)および対応するA値のセット(X_A、Y_A)で構成されます。

データフレームは次のようになります。

   X_F  X_A  Y_F  Y_A ID
   1    0.1   2   0.2  A
   2    0.2   3   0.3  A
   3    0.3   5   0.4  A
   4    0.4   NA  NA   A
   5    0.5   7   0.7  A
   NA   NA    1   0.1  B
   NA   NA    3   0.2  B
   NA   NA    4   0.7  B
   1   0.2    1   0.1  C
   2   0.3    NA  NA   C
   3   0.4    3   0.3  C
   4   0.5    4   0.4  C
   5   0.6    5   0.5  C

上記のデータフレームを展開して、次のデータフレームを取得したい。拡張されたデータフレームには、SFと呼ばれる追加の列があります。SFの値は、IDでグループ化されたX_F、Y_F列の範囲として導出されます。この範囲は、ステップごとに1の値で区切られます

     ID  SF   X_F  X_A   Y_F  Y_A
 1   A    1    1    0.1   1   NA
 2   A    2    2    0.2   2   0.2
 3   A    3    3    0.3   3   0.3
 4   A    4    4    0.4   4   NA
 5   A    5    5    0.5   5   0.4
 6   A    6    6    NA    6   NA
 7   A    7    7    NA    7   0.7
 8   B    1    1    NA    1   0.1
 9   B    2    2    NA    2   NA
 10  B    3    3    NA    3   0.2
 11  B    4    4    NA    4   0.7
 12  C    1    1    0.2   1   0.1
 13  C    2    2    0.3   2   NA
 14  C    3    3    0.4   3   0.3
 15  C    4    4    0.5   4   0.4
 16  C    5    5    0.6   5   0.5

必要な結果を得るために、このアプローチを試しました。

  library(dplyr)
  library(tidyr)
  DF1

    DF2<-DF1%>%group_by(ID)%>% mutate(SF=pmax(X_F, Y_F, na.rm = T))%>%
    complete(SF=(full_seq(SF ,1)))

上記の期待される出力に対して、次の出力があります

   ID       SF   X_F   X_A   Y_F   Y_A
  <fct>   <dbl> <dbl> <dbl> <dbl> <dbl>
   A       2     1     0.1   2     0.2
   A       3     2     0.2   3     0.3
   A       4     4     0.4   NA     NA  
   A       5     3     0.3    5    0.4
   A       6    NA     NA    NA    NA  
   A       7     5     0.5   7     0.7
   B       1    NA     NA    1     0.1
   B       2    NA     NA    NA    NA  
   B       3    NA     NA    3     0.2
   B       4    NA     NA    4     0.7
   C       1     1     0.2   1     0.1
   C       2     2     0.3   NA    NA  
   C       3     3     0.4   3     0.3
   C       4     4     0.5   4     0.4
   C       5     5     0.6   5     0.5

誰かに助けを求めます。これを解決することはできません

ロナックシャー

取得maxの値をSFcompleteし、使用seq代わりのfull_seqため

full_seq(2:4, 1) #gives
#[1] 2 3 4
#whereas
seq(max(2:4)) #gives
#[1] 1 2 3 4

だからやってみてください

library(dplyr)
library(tidyr)

DF1 %>%
  group_by(ID) %>% 
  mutate(SF= pmax(X_F, Y_F, na.rm = T)) %>%
  complete(SF = seq(max(SF)))


#   ID       SF   X_F   X_A   Y_F   Y_A
#   <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 A         1    NA  NA      NA  NA  
# 2 A         2     1   0.1     2   0.2
# 3 A         3     2   0.2     3   0.3
# 4 A         4     4   0.4    NA  NA  
# 5 A         5     3   0.3     5   0.4
# 6 A         6    NA  NA      NA  NA  
# 7 A         7     5   0.5     7   0.7
# 8 B         1    NA  NA       1   0.1
# 9 B         2    NA  NA      NA  NA  
#10 B         3    NA  NA       3   0.2
#11 B         4    NA  NA       4   0.7
#12 C         1     1   0.2     1   0.1
#13 C         2     2   0.3    NA  NA  
#14 C         3     3   0.4     3   0.3
#15 C         4     4   0.5     4   0.4
#16 C         5     5   0.6     5   0.5

期待される出力を得るにfull_seqは、ベクトルに1を追加ます。

DF1 %>%
  group_by(ID) %>% 
  mutate(SF= pmax(X_F, Y_F, na.rm = T)) %>%
  complete(SF = full_seq(c(1, SF), 1))

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

列名の複数の基準に基づいてデータフレーム列を抽出します

分類Dev

複数の列に基づいてRのデータフレーム行を結合します

分類Dev

前の複数の行/列の値に基づいてデータフレームの行を削除します

分類Dev

列の複数の値に基づいてデータフレームに新しい行を作成します

分類Dev

Rの条件に基づいて、データフレームに複数の新しい列を追加します

分類Dev

データフレームの各行について、Rの開始から終了までの数値に基づいて複数の行を作成します

分類Dev

Rのデータフレームの列に基づいてデータフレームを展開します

分類Dev

Rの複数の列に基づいて2つのデータフレームをマージします

分類Dev

複数の列間の接続に基づいて、データフレームの行を削除します

分類Dev

列の値に基づいてデータフレームを展開する

分類Dev

複数の列としきい値に基づいてデータフレームをマージします

分類Dev

1つの列に基づいてパンダのデータフレームの複製を表示し、基準に基づいて保持します

分類Dev

Daskデータフレーム-区切り文字に基づいて列を複数の行に分割します

分類Dev

forループを使用せずに、複数の基準に基づいて異なるデータフレームの行を照合します

分類Dev

R dplyr / tidyverseデータフレームの複数の列に基づいて最大日付を取得します

分類Dev

別のデータフレームに基づいてデータフレームに行を展開し、列を追加する

分類Dev

Pandasデータフレーム-複数の条件計算に基づいて複数の列を作成します

分類Dev

複数の列の値に基づいて新しいデータフレーム列を作成します

分類Dev

rの複数の列に基づいて、データフレーム内の重複する行を検索します

分類Dev

一致する行基準と共有列に基づいて2つのデータフレームをマージします

分類Dev

特定の基準に基づいてデータフレームに列を追加しますか?

分類Dev

リストとデータフレームに基づいて複数の条件を持つデータフレームに新しい列を追加します

分類Dev

既存の列に基づいて、データフレームに複数の行と単一の列を追加します

分類Dev

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

分類Dev

特定の基準に基づいて他の複数のデータフレームを使用してデータフレームを作成する

分類Dev

pandasデータフレームの条件に基づいて、セルを複数の行に分割/分解します

分類Dev

特定の関数を適用して、データフレーム内の別の列の基準に基づいて列の値を置き換えます

分類Dev

番号とグループIDに基づいてパンダのデータフレーム行を展開します(Python3)。

分類Dev

パンダは別のデータフレームに基づいて複数の列と行の値をnanに設定します

Related 関連記事

  1. 1

    列名の複数の基準に基づいてデータフレーム列を抽出します

  2. 2

    複数の列に基づいてRのデータフレーム行を結合します

  3. 3

    前の複数の行/列の値に基づいてデータフレームの行を削除します

  4. 4

    列の複数の値に基づいてデータフレームに新しい行を作成します

  5. 5

    Rの条件に基づいて、データフレームに複数の新しい列を追加します

  6. 6

    データフレームの各行について、Rの開始から終了までの数値に基づいて複数の行を作成します

  7. 7

    Rのデータフレームの列に基づいてデータフレームを展開します

  8. 8

    Rの複数の列に基づいて2つのデータフレームをマージします

  9. 9

    複数の列間の接続に基づいて、データフレームの行を削除します

  10. 10

    列の値に基づいてデータフレームを展開する

  11. 11

    複数の列としきい値に基づいてデータフレームをマージします

  12. 12

    1つの列に基づいてパンダのデータフレームの複製を表示し、基準に基づいて保持します

  13. 13

    Daskデータフレーム-区切り文字に基づいて列を複数の行に分割します

  14. 14

    forループを使用せずに、複数の基準に基づいて異なるデータフレームの行を照合します

  15. 15

    R dplyr / tidyverseデータフレームの複数の列に基づいて最大日付を取得します

  16. 16

    別のデータフレームに基づいてデータフレームに行を展開し、列を追加する

  17. 17

    Pandasデータフレーム-複数の条件計算に基づいて複数の列を作成します

  18. 18

    複数の列の値に基づいて新しいデータフレーム列を作成します

  19. 19

    rの複数の列に基づいて、データフレーム内の重複する行を検索します

  20. 20

    一致する行基準と共有列に基づいて2つのデータフレームをマージします

  21. 21

    特定の基準に基づいてデータフレームに列を追加しますか?

  22. 22

    リストとデータフレームに基づいて複数の条件を持つデータフレームに新しい列を追加します

  23. 23

    既存の列に基づいて、データフレームに複数の行と単一の列を追加します

  24. 24

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

  25. 25

    特定の基準に基づいて他の複数のデータフレームを使用してデータフレームを作成する

  26. 26

    pandasデータフレームの条件に基づいて、セルを複数の行に分割/分解します

  27. 27

    特定の関数を適用して、データフレーム内の別の列の基準に基づいて列の値を置き換えます

  28. 28

    番号とグループIDに基づいてパンダのデータフレーム行を展開します(Python3)。

  29. 29

    パンダは別のデータフレームに基づいて複数の列と行の値をnanに設定します

ホットタグ

アーカイブ