データフレーム列の内容を値に基づいて異なる列に分割する

Rilcon42

次のデータフレーム列を内容に応じて3列に分割しようとしています。dplyrとmutateをもっとよく学びたかったので使ってみましたが、どんな提案でも大歓迎です。

exampledf<-data.frame(c("Argentina","2005/12","2005/11","Bolivia","2006/12"),stringsAsFactors=F)
mutate(exampledf,month=strsplit(exampledf[,1],"/")[1],month=strsplit(exampledf[,1],"/")[2])

私の目標:

Year     Month    Country
2005     12       Argentina
2005     11       Argentina
2006     12       Bolivia

これはこのSOの投稿に非常に近いですが、私の繰り返しの国の問題には対処していません。

akrun

数値のない行(「i1」)の論理インデックスを作成し、その累積合計、splitそのグループ化インデックスを含むデータセットを取得し、「年」、「月」を(sub)で抽出し、「国」を次のように抽出します。最初の要素は、作成data.frame、および内容。rbindlist

 i1 <- grepl('^[^0-9]+$', exampledf$Col1)
 lst <- lapply(split(exampledf, cumsum(i1)), function(x) 
   data.frame(year= as.numeric(sub('\\/.*', '',   x[-1,1])), 
              month = as.numeric(sub('.*\\/', '', x[-1,1])),
              Country = x[1,1] ) )
 res <- do.call(rbind, lst)
 row.names(res) <- NULL

 res
 # year month   Country
 #1 2005    12 Argentina
 #2 2005    11 Argentina
 #3 2006    12   Bolivia

またはdata.table、を使用して、「data.frame」を「data.table」(setDT(exampledf))に変換しcumsum、インデックスの(上から)でグループ化してtstrsplit、「Col1」(最初の要素を削除)で区切り文字(/)を使用してを分割しますその中から2つの列が得られます。次に、最初の要素を連結して3つの列を作成し、列名をsetnames。で変更しますグループ化変数が必要ない場合は:=、NULLに)を割り当てることができます。

library(data.table)
res1 <- setDT(exampledf)[, c(tstrsplit(Col1[-1], 
        '/'),Country = Col1[1L]), .(i2=cumsum(i1))][,i2:= NULL][]
setnames(res1, 1:2, c('year', 'month'))

データ

 exampledf<-data.frame(Col1=c("Argentina","2005/12","2005/11",
          "Bolivia","2006/12"),stringsAsFactors=FALSE)

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

条件に基づいてデータフレーム列を異なる列に分割します

分類Dev

データフレームPythonの列基準に基づいて行の値を分割する

分類Dev

列の行に基づいてデータフレームを分割する方法

分類Dev

列の値の違いに基づいてパンダのデータフレームを分割する方法

分類Dev

異なるデータフレームの2つのキーに基づいて、データフレームの列の値を定義します

分類Dev

Pyspark-異なるデータフレームの値に基づいてデータフレームに列を追加します

分類Dev

異なる長さの文字列を分割し、一致に基づいてデータフレームの特定の列に貼り付けます

分類Dev

パンダ:列のnull値に基づいてデータフレームを分割する

分類Dev

異なる長さの文字列に基づいて2つのデータフレームを操作する

分類Dev

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

分類Dev

異なる行の列に基づいてデータフレームをマージします

分類Dev

カンマに基づいてデータフレーム列を分割する

分類Dev

文字列に基づいてデータフレームを分割する

分類Dev

セル文字列に基づいてデータフレームを分割する

分類Dev

パンダのデータフレームは、条件に基づいて列の最大値を異なる列値に置き換えます

分類Dev

条件に基づいてパンダデータフレームに新しい列を追加し、異なる列のNan値を置き換えます

分類Dev

列の値に基づいて複数に分割するPythonデータフレーム

分類Dev

データフレーム列を3で分割し、別の列の内容に基づいて分割をスキップする方法

分類Dev

条件に基づいてデータフレーム列を個別の列に分割する方法

分類Dev

条件に基づいてパンダデータフレーム列の特殊文字の文字列を分割する

分類Dev

等しい長さに基づいてデータフレーム列をRの別々の行に分割する方法

分類Dev

既存の列の隣接する値に基づいてPandasデータフレームに列を追加する

分類Dev

列の値に基づいてデータフレームを分割/拡張

分類Dev

単一の列の値に基づいてデータフレーム列に値を追加する

分類Dev

含まれているテキスト値に基づいてパンダのデータフレーム列を複数の列に分割する方法

分類Dev

パンダデータフレームの異なる値に基づいて列から値を減算する方法

分類Dev

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

分類Dev

他の列スパークの値に基づいてデータフレームに列を追加する方法

分類Dev

既存の列の値に基づいてpandasデータフレームに新しい列を追加する

Related 関連記事

  1. 1

    条件に基づいてデータフレーム列を異なる列に分割します

  2. 2

    データフレームPythonの列基準に基づいて行の値を分割する

  3. 3

    列の行に基づいてデータフレームを分割する方法

  4. 4

    列の値の違いに基づいてパンダのデータフレームを分割する方法

  5. 5

    異なるデータフレームの2つのキーに基づいて、データフレームの列の値を定義します

  6. 6

    Pyspark-異なるデータフレームの値に基づいてデータフレームに列を追加します

  7. 7

    異なる長さの文字列を分割し、一致に基づいてデータフレームの特定の列に貼り付けます

  8. 8

    パンダ:列のnull値に基づいてデータフレームを分割する

  9. 9

    異なる長さの文字列に基づいて2つのデータフレームを操作する

  10. 10

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

  11. 11

    異なる行の列に基づいてデータフレームをマージします

  12. 12

    カンマに基づいてデータフレーム列を分割する

  13. 13

    文字列に基づいてデータフレームを分割する

  14. 14

    セル文字列に基づいてデータフレームを分割する

  15. 15

    パンダのデータフレームは、条件に基づいて列の最大値を異なる列値に置き換えます

  16. 16

    条件に基づいてパンダデータフレームに新しい列を追加し、異なる列のNan値を置き換えます

  17. 17

    列の値に基づいて複数に分割するPythonデータフレーム

  18. 18

    データフレーム列を3で分割し、別の列の内容に基づいて分割をスキップする方法

  19. 19

    条件に基づいてデータフレーム列を個別の列に分割する方法

  20. 20

    条件に基づいてパンダデータフレーム列の特殊文字の文字列を分割する

  21. 21

    等しい長さに基づいてデータフレーム列をRの別々の行に分割する方法

  22. 22

    既存の列の隣接する値に基づいてPandasデータフレームに列を追加する

  23. 23

    列の値に基づいてデータフレームを分割/拡張

  24. 24

    単一の列の値に基づいてデータフレーム列に値を追加する

  25. 25

    含まれているテキスト値に基づいてパンダのデータフレーム列を複数の列に分割する方法

  26. 26

    パンダデータフレームの異なる値に基づいて列から値を減算する方法

  27. 27

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

  28. 28

    他の列スパークの値に基づいてデータフレームに列を追加する方法

  29. 29

    既存の列の値に基づいてpandasデータフレームに新しい列を追加する

ホットタグ

アーカイブ