【问题标题】:i have one column with long string so i want to convert it to simple integer in R so that I can easily join other table with that column我有一列带有长字符串,所以我想将其转换为 R 中的简单整数,以便我可以轻松地将其他表与该列连接
【发布时间】:2018-11-08 03:56:55
【问题描述】:

我在一个带有长字符串的数据集中有一列,我想将特定列转换为 R 中的简单整数值(散列或索引),以便我可以轻松地将其他表与该特定列连接起来,任何人都可以提出一些建议这个?

library(tidyverse)
mpg

mpg <- mpg %>% mutate(displ = as.character(displ), year = 
as.character(year)) %>%
mutate(matcher = as.character(paste(model, displ, year, sep = ""))) 


View(mpg)

如果您看到 matcher 列,它有一个长字符串值作为字符向量,我想将这些值映射到简单的整数,如 1、2、3 等。我该怎么做?

【问题讨论】:

  • 嗨,杰米玛,欢迎您。您能否为我们提供一个最小可重现示例,以便我们可以将您的一小部分数据剪切并粘贴到我们自己的 R 会话中,以及您尝试执行此任务的代码,以便我们可以得到相同的错误?当你这样做时,在这里得到答案要快得多。谢谢,祝你好运:)
  • 您好,mysterious 谢谢,现在我已经用示例代码编辑了这个问题。
  • 非常感谢。你有什么映射规则吗?看起来matcher 的 234 行中有 141 个唯一字符串。
  • 非常感谢,它成功了。现在想用名为 matchnum 的新列加入另一个表。再次感谢
  • 我认为下一步可能是您可以使用 purrr 库和 reduce 命令执行的操作。查看stackoverflow.com/questions/8091303/… 的想法:)

标签: r indexing hash


【解决方案1】:

如果您只想捕获每个唯一的字符串并为其分配一个数字,您可以这样做。如果您描述更复杂的映射,我将编辑答案:

> z <- transform(mpg, matchnum=as.integer(factor(matcher, unique(matcher))))
> head(z)
  manufacturer model displ year cyl      trans drv cty hwy fl   class   matcher matchnum
1         audi    a4   1.8 1999   4   auto(l5)   f  18  29  p compact a41.81999        1
2         audi    a4   1.8 1999   4 manual(m5)   f  21  29  p compact a41.81999        1
3         audi    a4     2 2008   4 manual(m6)   f  20  31  p compact   a422008        2
4         audi    a4     2 2008   4   auto(av)   f  21  30  p compact   a422008        2
5         audi    a4   2.8 1999   6   auto(l5)   f  16  26  p compact a42.81999        3
6         audi    a4   2.8 1999   6 manual(m5)   f  18  26  p compact a42.81999        3

【讨论】:

    猜你喜欢
    • 2015-05-19
    • 1970-01-01
    • 2017-04-25
    • 2020-04-17
    • 1970-01-01
    • 2016-01-23
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多