这个问题在这里已有答案:
我在R工作,我有两个阿拉伯语数据框,如下所示是数据集的示例: Dataset 1: vocab
term
1: شكرا
2: رقي
3: تضيعون
4: ابكي
Dataset 2: posneg
score words
1 ابكي 0
2 تضيعون 0
3 خسرت 0
4 ظلمونا 0
5 لا 0
6 مستهتر 0
7 وبلا 0
8 احباط 0
9 تفشلتوا 0
10 خسرتم 0
11 عقدتك 0
12 للاسف 0
13 مشكله 0
29 اضاع 0
30 حاقده 0
31 خطا 0
32 غير 0
33 ما 0
116 ابدعوا 1
117 اهنيكم 1
118 حبا 1
119 شكرا 1
120 فرحه 1
121 ممتاز 1
122 وزعيما 1
123 اجتهد 1
124 باهر 1
125 حبك 1
126 صحيح 1
127 فزت 1
我需要在数据1中的 term
列和数据2中的 words
列之间进行比较,因此如果数据1中 term
列中的任何单词与数据2中单词列中的任何单词匹配,则给出相同的分数,如果单词不匹配,我想要写(新) . 这是我期望的结果:
score term
1: شكرا 1
2: 1 رقي
3: 0 تضيعون
4: 0 ابكي
这是我写的代码但是得到了一个错误 .
n<-length(vocab$term)
n2<-length(posneg$words)
for (i in 1:n) {
if (vocab$term[i] == for (o in 1:n2) { posneg$words[o]})
{
vocab <- cbind(vocab, "score" = posneg$score[o] )} #add new column)
else{
vocab <- cbind(vocab, "score" = "no") #add new column
}
}
希望你了解我,谢谢!
2 回答
使用Pryore的数据和
data.table
:萨拉姆
不完全确定这是否是你想要的 . 不过,我使用tidyverse格式化if_else语句以匹配两个数据库中的单词列 . 如果单词出现在两者中,则将1打印到新数据,如果它们不打印,则打印0 .
例如,
这回答了你的问题了吗?