【发布时间】:2015-04-25 08:37:53
【问题描述】:
我有一个数据框 df,它有两列,term 和 frequency。我还有一个具有给定 ID 的术语列表,存储在一个名为 indices 的向量中。为了说明这两个信息,我有以下内容:
> head(indices)
Term
1 hello
256 i
33 the
同样,对于数据框。
> head(df)
Term Freq
1 i 24
2 hello 12
3 the 28
我想在df 中添加一个名为TermID 的列,这将只是向量indices 中术语的索引。我曾尝试使用dplyr::mutate,但无济于事。下面是我的代码
library(dplyr)
whichindex <- function(term){
ind <- which(indices == as.character(term))
ind}
mutate(df, TermID = whichindex(Term))
我得到的输出是一个df,它有一个名为TermID 的新列,但TermID 的所有值都是相同的。
谁能帮我弄清楚我做错了什么?如果您可以在 [R] 中推荐一种更有效的算法来执行此操作,那也很好。我已经在 Python 中实现了这个,我还没有遇到过这样的问题。
提前致谢。
【问题讨论】:
-
为什么不只是
merge(来自基地)或join? -
另外,您能否发布
dput(head(indices))和dput(head(df))的输出,以免您使用的数据结构有歧义。 -
谢谢,阿难。因为我要处理几十万字,所以我实际上正在寻找一种更快的算法。
df和indices都有class = "data.frame"。但是,我注意到indices在Term列下的每个元素都是class = "factor"。 -
df$TermID <- match(df$Term,indices$Term)会做到这一点,根据我的测试,在一百万个案例中将花费几毫秒。 -
@thelatemail 做到了。谢谢。