【问题标题】:Convert string categorical data in data frame to Numeric data将数据框中的字符串分类数据转换为数值数据
【发布时间】:2020-04-17 15:55:59
【问题描述】:

我的数据框中有以下值 (800)

cat1 <- c("bi", "bt", "ch", "fs", "hc", "lh", "mo", "ms", "nn", "ro", "sc", "si", "so", "ti", "ww", "dt", "3et", "a", "a", "a", "a", "a", "a", "aam", "aao", "ac", "acs", "aeo", "aeq", "afm", "aic", "aio", "akq", "am", "am", "am", "am", "amc", "amc", "aoq", "aoq", "aot", "apm", "apo", "apo", "aqf", "ass", "ata", "ata", "atc", "atf", "atq", "atr", "aun", "bae", "baf", "bai", "bcm", "bcs", "bea", "bee", "bef", "bem", "bem", "bem", "bem", "bem", "beo", "beo", "beq", "beq", "beq", "bhm", "bkr", "bm", "bm", "bme", "bmm", "bmm", "bmo", "bmq", "bmq", "brm", "brm", "brq", "bsm", "bsm", "bsm", "bsm", "bso", "bta", "bwa", "clm", "dd", "dm", "ne", "pp", "pv", "rt", "se", "sw")

我想用数值替换所有字符串值,以便我可以将它们输入神经网络,例如,我希望将所有“am”替换为 5 或 0.5,并将所有“bem”替换为 7 或 0.7 表示根据一些逻辑。 尝试了很多事情,但什么都做得到

【问题讨论】:

  • 虽然不清楚。有很多值,不确定应该如何替换它们。如果您想将 tl 转换为数字,一个选项是 as.integer(factor(data9$cat1))match(data9$cat1, unique(data9$cat1))
  • as.numeric(as.factor(cat1))
  • 他们都工作了 :) 非常感谢

标签: r dataframe neural-network data-conversion


【解决方案1】:

如果你知道什么是替换规则,你可以建立一个字典并使用命名变量进行查找。

例如,

cat1 <- c("bem","am","am","bem","am")
dict <- `names<-`(c(7,5),c("bem","am"))
res <- dict[cat1]

你会得到

> res
bem  am  am bem  am 
  7   5   5   7   5 

【讨论】:

  • 但是如果我的数据框中有 800 个唯一值怎么办
  • @MeenakshiGarg 但是有 800 个唯一值,你知道它们是从什么映射而来的吗?
  • @MeenakshiGarg 然后你可以建立从单词到数字的一对一映射
  • @MeenakshiGarg 如果我正确理解您的目的,您有 800 个独特的单词要替换为 800 个独特的数字,对吗?但是你知道哪个单词代表哪个数字吗?如果您没有相应的替换,则无法确定。在您的示例中,您知道将“am”替换为 5,将所有“bem”替换为 7,但您还应该知道应该替换“bi”、“bt”、“ch”、“fs”的内容"等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
相关资源
最近更新 更多