【发布时间】:2017-01-21 05:30:01
【问题描述】:
我想使用因子,但遇到了一些问题。我的问题可能表明我并不完全了解因素:)
以以下数据“my_data”为例(实际数据要大得多,但形式相似):
0,stack
0,exchange
0,overflow
1,list
1,stack
第一列是user_id,第二列是用户使用的标签。我想计算所有用户的标签交集。为了有效地做到这一点,我想在整数而不是字符串上计算它们。
所以我认为因素是要走的路。从第 2 列中提取一个因素给我一个看起来像这样的因素:
Factor w/ levels "stack", "exchange", "overflow", "list": 1 2 3 4 1
接下来我要做的是:
unique(my_data[my_data$V1 == 0, 2])
获取 id 为 0 的用户的所有标签,这当然会返回一个带有字符串的向量。我现在如何从这个向量的因子中获取相应的索引?
【问题讨论】:
-
as.numeric(unique(my_data[my_data$V1 == 0, 2]))? -
您的预期结果是什么?
-
效率方面,无论您使用因子还是字符串都不应该有所不同:据我所知,较新版本的 R 对向量/data.frame 中的字符串执行字符串池,因此比较实际上只是一个指针比较,与比较整数相同。
-
好的,谢谢,我会尝试不使用因子。我仍然有点好奇如何获取 (1, 2, 3) 而不是 (stack, exchange, overflow)。 @Roland 的回答可能是正确的,但 as.numeric 显然不知道要使用哪个因子进行转换。
-
“我们应该忘记小的效率,比如说大约 97% 的时间:过早的优化是万恶之源”。如果您有 1MM+ 行数据并且非常频繁地执行此操作,那么这似乎是担心高效执行此操作的好时机。否则就顺其自然吧。