【问题标题】:Give factors numerical value [R]给因子数值 [R]
【发布时间】:2014-07-15 15:21:56
【问题描述】:

我想预测一个数值变量。我有几个因素。对于所有这些因素,我有一个数字等价物。现在将这个数值等价于该因子并在预测中使用它是完美的。这可能吗? 如果这是不可能的,我想我需要用它们的等值替换这些因子。最好的方法是什么?

一个例子:

df = data.frame(f=c("a","b","a","c"),v=c(2,4,2,6))
lookup = data.frame(name=c("a","b","c"),v=c(1,2,3))

我想得到什么

df2 = data.frame(f=c(1,2,1,3),v=c(2,4,2,6))
cor(df2$f,df2$v) # will be 1

【问题讨论】:

  • 你是什么意思,因子有数值等价物?因素是类别。当您说预测时,您的意思是什么?
  • R 将因子视为分类变量,将数值视为连续变量。这两种类型的变量通常具有与之相关的不同统计方法,并且模型的解释因变量类型而异。您确实应该首先决定哪种类型的分析适合您的数据。
  • 我添加了一个示例以使其更加清晰。字母是我得到的,查找表中的数字是我之前计算的一些平均值,现在想使用。

标签: r prediction numerical r-factor


【解决方案1】:

或者

df2 <- merge(df, lookup, by.x = "f", by.y = "name")
cor(df2[, 2], df2[, 3])

或者如果您的数据集很大

library(data.table)
setkey(setDT(df), f)
setkey(setDT(lookup), name)
df2 <- df[lookup]
cor(df2[, 2, with = F], df2[, 3, with = F])

【讨论】:

    【解决方案2】:

    这有帮助吗?

    cor(lookup$v[match(df$f,lookup$name)],df$v)
    

    【讨论】:

    • 谢谢,这也有效,但前提是只需要一列进行标识。我需要更多(即使我的示例中没有包含)
    猜你喜欢
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 2014-06-20
    • 2020-08-20
    • 1970-01-01
    • 2015-02-10
    • 2015-06-20
    • 1970-01-01
    相关资源
    最近更新 更多