【问题标题】:R convert names to numbersR将名称转换为数字
【发布时间】:2012-01-01 12:06:06
【问题描述】:

我有一个包含捐赠和捐赠者姓名的数据框。

**donation**              **Donor**
 25.00               Steve Smith
 20.00               Jack Johnson
 50.00               Mary Jackson
  ...                   ...

我正在尝试使用pvclust 包进行一些聚类。不幸的是,该软件包似乎没有采用非数字数据。

> rs1.pv1 <- parPvclust(cl, rs1, nboot=10)
Error in cor(x, method = "pearson", use = use.cor) : 'x' must be numeric

我有两个问题。

1) 是否有其他包或方法可以做得更好?

2) 有没有办法“规范化”捐赠者名单?即获取一个唯一捐赠者姓名的列表,为每个人分配一个 ID 号,然后将 ID 号插入数据框中以代替角色名称。

【问题讨论】:

  • 我强烈怀疑您不想将这些名称转换为数字并将它们提供给parPvclust。相反,快速查看?parPvclust?lung 中的示例,看起来您应该使用Donor 列作为rownames 属性,然后将其从矩阵或data.frame 中删除。
  • @JoshO'Brien:回答这个问题???
  • 你能更详细地解释一下你在这个例子中要做什么吗?例如,您是否想提出具有相似捐赠水平的捐赠者集群(在这种情况下,我很想使用aveplyr::ddply 来获得每个捐赠者的平均捐赠,然后将它们聚类...)
  • @BenBolker -- 我现在没有时间,而且可能值得等待 OP 的回复。我只是想放大你和 Iselzer 的疑虑,在 OP 关闭并对该功能做了一些可能荒谬的事情之前!
  • 数据还有很多其他列(捐赠事件、目的、财政年度等)。我只是在寻找任何意想不到的关系。没有真正的总体规划。有点像绘制数据,你永远不知道你会发现什么。

标签: r pearson pvclust


【解决方案1】:

对于 2 号:

#If donor is a factor then

as.numeric(donor)

#will transform your factor to numeric.
#If it isn't, tranform it to a factor and the to numeric
as.numeric(as.factor(donor))

但是,我不确定将捐赠者列表转换为数字然后使用 cor 是否有意义。

HTH

【讨论】:

  • 领先你 11 秒。你的意思是as.numeric(as.factor(donor)) ..?
【解决方案2】:

rs1 &lt;- transform(rs1, Donor=as.numeric(factor(Donor))) 怎么样? (警告:我还没有考虑到你在做什么足以知道这是否有意义 - 所以我只回答问题 #2,而不是问题 #1)。通常Donor 已经是一个因素(例如read.tableread.csv 默认会这样做),所以factor() 部分将是多余的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 2018-03-06
    • 2011-05-15
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    相关资源
    最近更新 更多