に追加し、以下のように私は2つのデータテーブルを持っている:
バイグラム検索データと新しい列
w1w2 freq w1 w2
common names 1 common names
department of 4 department of
family name 6 family name
bigrams = setDT(structure(list(w1w2 = c("common names", "department of", "family name"
), freq = c(1L, 4L, 6L), w1 = c("common", "department", "family"
), w2 = c("names", "of", "name")), .Names = c("w1w2", "freq",
"w1", "w2"), row.names = c(NA, -3L), class = "data.frame"))
ユニグラム
w1 freq
common 2
department 3
family 4
name 5
names 1
of 9
unigrams = setDT(structure(list(w1 = c("common", "department", "family", "name",
"names", "of"), freq = c(2L, 3L, 4L, 5L, 1L, 9L)), .Names = c("w1",
"freq"), row.names = c(NA, -6L), class = "data.frame"))
所望の出力を
w1w2 freq w1 w2 w1freq w2freq
common names 1 common names 2 1
department of 4 department of 3 9
family name 6 family name 4 5
私がこれまで行ってきた何
setkey(bigrams, w1)
setkey(unigrams, w1)
result <- bigrams[unigrams]
これは私にw1
ためi.freq
列を与えるが、私はi.freq
列がw2
のFREQを反映するように更新されw2
のための同じをしようとします。
別の列にw1
とw2
の両方の周波数を得るにはどうすればよいですか?
注:私はすでにあなたが整形のビットでこれを行うことができdata.table Lookup value and translateとModify column of a data.table based on another column and add the new column
data.tableソリューションをお探しですか?そうでなければ、これはうまくいくはずです:bigrams $ w1freq < - unigrams $ freq [match(bigrams $ w1、unigrams $ w1)]; bigrams $ w2freq < - ユニグラム$ freq [一致(bigrams $ w2、unigrams $ w1)]; – chinsoon12
@ chinsoon12はい私は大きなデータセットのためのソリューションを使用する予定であるので、私はそれをdata.tableを使用して解決することを好むだろう。 –
はあなたの望む出力の 'freq'列ですか? – SymbolixAU