2017-12-07 23 views
1

で表示する以下のコードを確認してください。以下の3つの変数を使用してデータフレームを作成しました。変数y123はa2とa1の間の類似性を計算します。変数 "y123"は私に合計16個の値を与え、すべてのa1の値がa2と比較されます。特定の「a1」値と特定の「a2」値を比較すると、「a2」に対応する「a3」値が表示されます。結果は、列y123を有するデータフレームであり、対応する「a3」列は、4回、すなわち16の値を示す第2の列でなければならない。ありがとう、助けてください。データフレーム内の対応する値をR

library(stringdist) 
library(RecordLinkage) 
a1 = c(103,120,142,153) 
a2 = c(113,453,142,102) 
a3 = c("a1","b1","c1","d1") 
a1 = as.character(a1) 
a2 = as.character(a2) 
a3 = as.character(a3) 
a123 = data.frame(a1,a2,a3) 
y123 = sapply(a1, function(i) RecordLinkage::levenshteinSim(i,a2)) 
b1 = c(y123) 
b1 

私は何かのリストにこの必要があります:私はこれが何をしたいと思い

new_data = data.frame(b1,new_column) 
+0

結果のdata.frameがどのように表示されるかの例を追加できますか?私はあなたが列y123と言うとき、それは複数の列を持つdata.frameであるため、ちょっと混乱しています。 – LyzandeR

+0

@LyzandeR、返信ありがとう、私はあなたのために非常に明確にしました。 –

答えて

0

を。 sapply関数を変更しました。

data.frame(y123 = c(y123), a3 = rep(a3, times = length(a3))) 
#  y123 a3 
#1 0.6666667 a1 
#2 0.3333333 b1 
#3 0.3333333 c1 
#4 0.6666667 d1 
#5 0.3333333 a1 
#6 0.0000000 b1 
#7 0.3333333 c1 
#8 0.3333333 d1 
#9 0.3333333 a1 
#10 0.0000000 b1 
#11 1.0000000 c1 
#12 0.6666667 d1 
#13 0.6666667 a1 
#14 0.6666667 b1 
#15 0.3333333 c1 
#16 0.3333333 d1 
+0

これは良いことですが、関数を使用すると、巨大なデータセットにロジックを適用する必要があるため、非常に遅くなります。また、データフレームはy123列を持ち、 "a1"、 "a2"、 "a3"、 "a4"は、他の4回後に発生します。 –

+0

私はそれを単純化しました。これも本当に速いでしょう。 – LyzandeR

+0

ええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええと>サブセット()のようなものがチェックできれば機能します。 –

関連する問題