【发布时间】:2014-07-28 17:40:44
【问题描述】:
链接到我以前的问题:r plyr revalue limitation of number of operations? 还有这个请求:mapvalues in plyr gives unexpected output when "to" argument is a factor...is it a bug?
我想更改数据框因子中级别的值,我在一个因子中有 300 个要重命名的级别,而在另一个因子中有 3000 个级别。所以使用 c("", "") 是没有问题的。我创建了两个用于重命名的新数据框,其中包含要匹配的值和要重估的值。现在,我遇到了一个小问题,我目前的 R 技能水平无法解决。
让我们重用 R 食谱示例:
首先使用值创建一个数据框:
library(plyr)
cat <- c("alpha","beta","gamma","alpha","beta")
amount <- c(2, 5, 8, 3, 4)
df <- data.frame(cat, amount)
df
cat amount
1 alpha 2
2 beta 5
3 gamma 8
4 alpha 3
5 beta 4
mapvalues(df$cat, c("beta", "gamma"), c("two", "three"))
[1] alpha two three alpha two
Levels: alpha two three
这可行,将一个值更改为另一个值,并删除未使用的级别。
让我们尝试对包含所有需要匹配的值及其替换的数据框使用一种方法。
val <- c("beta", "gamma")
text <- c("two", "three")
reval <- data.frame(val, text)
reval
val text
1 beta two
2 gamma three
mapvalues(df$cat, reval$val, reval$text)
[1] alpha 2 1 alpha 2
Levels: alpha 2 1
这会将级别的值替换为数字。那时我有点卡在那里,因为我不知道如何根据我的情况调整提供的第二个链接2 中给出的解决方案。
【问题讨论】: