2017-02-02 4 views
0

この質問が不快にならないように謝罪しますが、私はまだRの中で初心者です。私は基本を知っています。私はそれをかなりよく読むことができますが、私はまだ自分が失われているのを見つけます。R:定義欄にセミコロンで区切った値でデータフレームをマージ/マッチングする

ここに私の質問があります: 私は2つのデータフレームを持っていますが、どういうわけかこのように見えます。

Table1 <- data.frame("Name"=c("aaa","bbb-2; bbb", "ddd", "eee", "fff-2; fff"), 
"Values1"= c(2, 0.5, 0.1, 3, 4)) 

Table2 <- data.frame ("Name"=c("aaa", "ccc", "bbb; ddd", "fff"), 
"Values2"= c(5, 2, 1, NA), "Values3"= c(4, NA, 1, NA)) 

私は名前の列でデータフレームをマージしたいのですが、これらの名前の欄にセミコロンで区切られているいくつかのエントリがある(例えば「BBB-2; BBB」)といくつかのようないくつかの不要なadditonsを持っています」 -2 "となる。

表-2では、「-2」が付いていても同じ名前のエントリのみがセミコロンで区切られているようです(例:「bbb-2; bbb」)。 表2では、異なる名前が区切られています。 (例: "bbb; ddd")

セミコロンで区切られた値のいずれかが一致する場合は、表2の値をTable1に追加したいと考えています。私はすべてのデータをTable1に保存したいと思います。しかし、表2のデータのすべてではありません。テーブル1のデータでTable1が豊富になっていない場合、値は0でなくNULLにする必要があります。

ただし、統計のために別々の行のエントリを分割してデータを複製しないようにしたいと考えています。

答えて

0

我々は

Table1$Name <- sub("-\\d+", "", Table1$Name) 

をサブストリングそれらを削除しmerge

merge(Table1, Table2, by = "Name", all.x = TRUE) 
+0

OK、私はそれが今で働くだろうと思いますが、私が取得します将来のデータであればを行うにsubを行うことができますTable1の名前は、この "-2"が追加されたときセミコロンで区切られるだけでなく、別の名前ですか? (つまり、「bbb-2; bbb」の代わりに「bbb; ccc」) – fat2mad

+0

@ fat2mad「bbc-2」がある場合にのみ対処します。 – akrun

+0

@ fat2madそうであれば、 'Table1'に' Table2'のどの値を割り当てるべきですか? – LAP

関連する問題