【发布时间】:2013-02-18 01:29:17
【问题描述】:
我正在尝试进行一些文本处理,并且需要重新编码句子中的单词,以便在新变量中以特定方式识别目标单词。例如,给定一个看起来像这样的数据框...
subj <- c("1", "1", "1", "2", "2", "2", "2", "2")
condition <- c("A", "A", "A", "B", "B", "B", "B", "B")
sentence <- c("1", "1", "1", "2", "2", "2", "2", "2")
word <- c("I", "like", "dogs.", "We", "don't", "like", "this", "song.")
d <- data.frame(subj,condition, sentence, word)
subj condition sentence word
1 A 1 I
1 A 1 like
1 A 1 dogs.
2 B 2 We
2 B 2 don't
2 B 2 like
2 B 2 this
2 B 2 song.
我需要创建一个新列,其中目标单词的每个实例(在本例中,当 d$word="like" 时)都标记为 0,句块中“like”之前的所有单词递减,所有“喜欢”之后的单词递增。每个主题都有多个句子,句子因条件而异,因此循环需要考虑每个主题、每个句子的目标词实例。最终结果应该是这样的。
subj condition sentence word position
1 A 1 I -1
1 A 1 like 0
1 A 1 dogs. 1
2 B 2 We -2
2 B 2 don't -1
2 B 2 like 0
2 B 2 this 1
2 B 2 song. 2
对不起,如果问题措辞不当,我希望它是有道理的!请注意,每个句子中的目标不在同一个位置(相对于句子的开头)。我对 R 很陌生,可以弄清楚如何增加或减少,但不能在每个句子块中同时做这两件事。关于解决此问题的最佳方法的任何建议?非常感谢!
【问题讨论】:
-
你如何决定(例如)
We是来自第二个like的-2还是来自第一个like的+2? -
@thelatemail,有一个栏目叫
sentence;) -
@RicardoSaporta - 很好,但如果句子是
I like the way you like to like things. -
@thelatemail,那么大概需要将句子分成几部分。但是,我猜想在确定相对位置之前会处理这种预处理。另外,我也喜欢你喜欢事物的方式。
-
@thelatemail 这实际上来自实验性操作,所以我们已经考虑到了这一点,但是是的,这不是编写语料库的好方法!
标签: r variables data-manipulation