2017-01-18 4 views
2

私は、Rを使って共通の列にマージする必要がある2つのデータセットを持っていますが、同じフォーマットを表示するように変更する必要があります。 1列このような他のルックスながら、このR:マージできるように列を編集する

BT0-3 
BT0-4 
BT0-5 

次のようになります。

BT0_3.5 
BTO_4.5 
BT0_5.5 

は私はちょうど彼らはので、私はそれらをマージすることができます一致するようにする必要があり、余分な0.5があるので(数値はラベルですちょうど異なって記録されます)

答えて

0

両方の列のすべての値はBT0で始まりますか? 2番目の列では、値の1つがBTOと入力されています。それはタイプミスですか?その後、モードの両方の列が文字(というよりもファクター)であることを確認し、両方のカラムの値がBT0で始まると仮定:

df$varは、変更したいデータフレームとコラムで
df$var = gsub("_([0-9])\\..$", "-\\1", df$var) 

を。これにより、数字の前のアンダースコアがハイフンに置き換えられ、ピリオドが削除され、その後に文字列の末尾にある文字が続きます。

2

あなたの質問に置換する方法である場合は ' - ' に '_'、それは次のようになります。 VAR =サブ(パターン= ' - '、交換= '_'、X = VAR)

の場合'.5'を削除したい場合は、 var = sub(pattern = '.5'、replacement = ''、x = var) は単純にジョブを実行します。

関数 'sub'と 'gsub'の違いは 'gsub'です。パターンに一致するものはすべて置換し、 'sub'は最初の一致を置換します。私はあなたのデータをよく知らない場合はサブを使用することをお勧めし、交換後に改善を見つけるために 'grep'を試してください。

関連する問題