Rの列値の文字列に基づいて、データフレームを2つのサブデータフレームに分割します

ahbon

データフレームdfを次のように想定します。

df <- structure(list(city = structure(c(5L, 4L, 1L, 6L, 3L, 7L, 2L), .Label = c("dc", 
"ld", "nj", "ny", "week1", "week2", "wt"), class = "factor"), 
    area = c(3L, 2L, 1L, 8L, 3L, 3L, 2L), price = c(7L, 4L, 3L, 
    5L, 1L, 2L, 2L)), class = "data.frame", row.names = c(NA, 
-7L))

アウト:

city   area price
week1   3   7       
  ny    2   4       
  dc    1   3       
week2   8   5       
  nj    3   1       
  wt    3   2       
  ld    2   2   

上記のデータフレームでは、week1行はの合計でnyありdcweek2はの合計ですnj, wt, ldどうすればそれweek2を2つのデータフレームに分割してweekを削除できますか?

期待される結果は次のようになります。

df1:

city   area price   
  ny    2   4       
  dc    1   3   

df2:

city   area price   
  nj    3   1       
  wt    3   2       
  ld    2   2   

私の考えは、の位置を取得してからweek2、以下を使用することです。

df1 = df[1:index,]
df2 = df[(index +1) : nrow(df),]

それは理にかなっていますか?ありがとう。

ロナックシャー

'週'行の位置を見つけて、それに基づいてデータを分割できます。次に、各リストから1行目を削除できます。

result <- lapply(split(df, cumsum(grepl('week', df$city))), function(x) x[-1, ])

または以下で短くするby

result <- by(df, cumsum(grepl('week', df$city)), function(x) x[-1, ])

別の方法は次のようになりますMap

inds <- grep('week', df$city)
result <- Map(function(x, y) df[x:y, ],inds + 1, c(inds[-1] - 1, nrow(df)))
result
#[[1]]
#  city area price
#2   ny    2     4
#3   dc    1     3

#[[2]]
#  city area price
#5   nj    3     1
#6   wt    3     2
#7   ld    2     2

次の方法でリストに名前を割り当てることができますresult

names(result) <- paste0('df', seq_along(result))

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

値に基づいてデータフレームを3つのサブフレームに分割します

分類Dev

Pandasの共通の列に基づいて、1つのデータフレームを複数のサブデータフレームに分割します

分類Dev

文字列列の値に基づいてパンダのデータフレームを分割します

分類Dev

パンダ:特定の列の文字列値に基づいて、データフレームを個別のデータフレームに分割します

分類Dev

文字の値に基づいてデータフレーム文字を列に分割します

分類Dev

R:部分文字列に基づいて2つのデータフレームをマージします

分類Dev

他の2つの列データフレームに基づいて列の値を計算します

分類Dev

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

分類Dev

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

分類Dev

列の値に基づいてパンダの2つのデータフレームを比較します

分類Dev

2 つの列の値に基づいてデータフレーム pandas の重複を削除します

分類Dev

行インデックスに基づいて、データフレームを2つの互いに素なサブフレームに分割します

分類Dev

Pandasデータフレームを列の値に基づいて別々の部分に分割します

分類Dev

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

分類Dev

列値の項目の最初の出現に基づいて、データフレーム列を2つに分割します

分類Dev

条件に基づいて、Rの2つのデータフレーム間の列の値を検証する

分類Dev

2つの列の変数値に基づいて、複数のデータフレームの行をサブセット化します

分類Dev

列の共通値に基づいて、大きなデータフレームをデータフレームのリストに分割します

分類Dev

フレームの1つの列と別の列の2つの列に基づいて2つのデータフレームを結合します

分類Dev

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

分類Dev

他の列のデータフレームrの値に基づいて列を追加します

分類Dev

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

分類Dev

他の2つのデータフレームの値に基づいて新しい列を作成する

分類Dev

2つの列の情報に基づいて、データフレームに列を追加します

分類Dev

Rの列に基づいてデータフレームを半分に分割します

分類Dev

pandasデータフレームの値に基づいて文字列の値を更新します

分類Dev

パターンに基づいてデータフレームの行を新しい列に文字列分割

分類Dev

文字列である最初の列に基づいてRのデータフレームを集約します

分類Dev

列の値に基づいてSparkデータフレームを分割しますか?

Related 関連記事

  1. 1

    値に基づいてデータフレームを3つのサブフレームに分割します

  2. 2

    Pandasの共通の列に基づいて、1つのデータフレームを複数のサブデータフレームに分割します

  3. 3

    文字列列の値に基づいてパンダのデータフレームを分割します

  4. 4

    パンダ:特定の列の文字列値に基づいて、データフレームを個別のデータフレームに分割します

  5. 5

    文字の値に基づいてデータフレーム文字を列に分割します

  6. 6

    R:部分文字列に基づいて2つのデータフレームをマージします

  7. 7

    他の2つの列データフレームに基づいて列の値を計算します

  8. 8

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

  9. 9

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

  10. 10

    列の値に基づいてパンダの2つのデータフレームを比較します

  11. 11

    2 つの列の値に基づいてデータフレーム pandas の重複を削除します

  12. 12

    行インデックスに基づいて、データフレームを2つの互いに素なサブフレームに分割します

  13. 13

    Pandasデータフレームを列の値に基づいて別々の部分に分割します

  14. 14

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

  15. 15

    列値の項目の最初の出現に基づいて、データフレーム列を2つに分割します

  16. 16

    条件に基づいて、Rの2つのデータフレーム間の列の値を検証する

  17. 17

    2つの列の変数値に基づいて、複数のデータフレームの行をサブセット化します

  18. 18

    列の共通値に基づいて、大きなデータフレームをデータフレームのリストに分割します

  19. 19

    フレームの1つの列と別の列の2つの列に基づいて2つのデータフレームを結合します

  20. 20

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

  21. 21

    他の列のデータフレームrの値に基づいて列を追加します

  22. 22

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

  23. 23

    他の2つのデータフレームの値に基づいて新しい列を作成する

  24. 24

    2つの列の情報に基づいて、データフレームに列を追加します

  25. 25

    Rの列に基づいてデータフレームを半分に分割します

  26. 26

    pandasデータフレームの値に基づいて文字列の値を更新します

  27. 27

    パターンに基づいてデータフレームの行を新しい列に文字列分割

  28. 28

    文字列である最初の列に基づいてRのデータフレームを集約します

  29. 29

    列の値に基づいてSparkデータフレームを分割しますか?

ホットタグ

アーカイブ