首页 > 解决方案 > 如何为R中的列中的新单词分配数值

问题描述

我在 R 中为这样的水果列表赋值。

#input csv of fruits

fruits
 apple
 pineapple
 orange
 pear

fruits <- data.frame(fruits = c("apple", "pineapple", "orange", "pear"))

mapping <- c("apple" = 1, "orange"= 10, "pear" = 5,"pineapple" = 11)

fruits$value <- mapping[fruits[,1]]

#output

fruits     value
 apple     1
 pineapple 11
 orange    10
 pear      5

当水果列表更新时,比如通过添加芒果和猕猴桃,我希望将任何可能的意外单词/水果文本分配为数值 1,而无需将该特定单词添加到映射中。

用新水果运行代码会输出这个。

fruits     value
 apple     1
 pineapple NA
 orange    11
 pear      NA
 mango     5
 kiwi      10

fruits2 = data.frame(fruits = 
  c("apple", "pineapple", "orange", "pear", "mango", "kiwi"))

我希望 NA 与芒果和猕猴桃在一起,但事实并非如此。

如何将值 1 分配给未包含在原始映射中的新水果?

谢谢

标签: rtextmappingnumericassign

解决方案


首先 iffruits是一个因素将其转换为字符

df$fruits <- as.character(df$fruits)

然后你做

df$value <- mapping[df$fruits]

df
#     fruits value
#1     apple     1
#2 pineapple    11
#3    orange    10
#4      pear     5
#5     mango    NA
#6      kiwi    NA

这将为不在的s 提供NAs 。现在把s 变成 1。fruitsmappingNA

df$value[is.na(df$value)] <- 1

df
#     fruits value
#1     apple     1
#2 pineapple    11
#3    orange    10
#4      pear     5
#5     mango     1
#6      kiwi     1

推荐阅读