bugfix> r > 投稿

私はデータセットを持っていて、それを段階的にクリーンアップしようとしています。私が抱えている課題の1つは、人々がさまざまな方法でコメントを書くことです。そのため、10万ドルの形で数字を表示することもあれば、100000ドルの形で数字を表示することもあります。どうすれば変えられるのかしらK1000、つまり$43Kの代わりに$43000があります。サンプルデータを以下に示します。

structure(list(comment3 = c("3.22%-1ST $100K/1.15% BAL", "3.25% ON 1ST $100000/1.16% ON BAL", 
"3.22% 1ST 100K/1.16 ON BAL", "3.22% 1ST 100K/1.15% ON BAL", 
"3.26% 1ST 100K/1.16% ON BAL", "3.20% 1ST 100K/1.15% ON BAL", 
"3.22% ON 1ST 100K & 1.15% ON BALANCE")), row.names = c(NA, -7L
), class = c("tbl_df", "tbl", "data.frame"))
1 3.22%-1ST $100K/1.15% BAL           
2 3.25% ON 1ST $100000/1.16% ON BAL   
3 3.22% 1ST 100K/1.16 ON BAL          
4 3.22% 1ST 100K/1.15% ON BAL         
5 3.26% 1ST 100K/1.16% ON BAL         
6 3.20% 1ST 100K/1.15% ON BAL         
7 3.22% ON 1ST 100K & 1.15% ON BALANCE

ここで説明したアプローチを使用してみましたRでKから千(1000)に変換する しかし、私は成功しませんでした。これが私のコードです:

as.numeric(sub("\\d\\d\\d[K]","Ke3", data$comment3, fixed=TRUE))

[]にKを入れることで、どういうわけかそれを分離して、分離したKを使用し、1000倍しても機能しないことを期待していました。

問題は、テキストと数字の組み合わせがあるので、最初に数字を選択してから、1000を掛けて、それを置き換える必要があるということです。これは、方法がわかりません。私はまた、現在機能している非効率的な方法を持っています:

bb <- str_match(df_com$comment3, pattern = "\\d\\d\\dK")
table(bb)

これを行うことによって、私は次のようなケースしかないことがわかりました100K350Kそして110K、それで私はこれらの数字を100000、350000、110000に置き換えましたが、この方法は効率的ではなく、ちょっとばかげています!これを修正する方法についてのコメントはありますか?

回答 1 件
  • これは、1つ以上の数字の後にKが続き、それに000が追加される、迅速で汚い方法です。

    data %>% 
      mutate(comment3 = str_replace(comment3 , "(\\d+)K", "\\1000"))
    
    

    データが `data 'に配置される場所。

    使用する \1 (または \\1 エスケープされた場合)一致したグループのコンテンツを含める(ここでは、 \\d+ )あなたが試みに欠けていた部分のようです。

    サンプルデータの結果:

    # A tibble: 7 x 1
      comment3                              
      <chr>                                 
    1 3.22%-1ST $100000/1.15% BAL           
    2 3.25% ON 1ST $100000/1.16% ON BAL     
    3 3.22% 1ST 100000/1.16 ON BAL          
    4 3.22% 1ST 100000/1.15% ON BAL         
    5 3.26% 1ST 100000/1.16% ON BAL         
    6 3.20% 1ST 100000/1.15% ON BAL         
    7 3.22% ON 1ST 100000 & 1.15% ON BALANCE
    
    

あなたの答え