0

所以...我有一个包含许多类别的变量的大型数据集。我想创建将其中一些类别归为一类的新变量。

我可以用一个条件语句来做到这一点,但考虑到类别的数量,我需要永远走一条线。此外,虽然我的原始变量是数字,但值本身是随机的,所以我不能使用逻辑或范围语句。

如何根据许多特定值创建此条件变量?

我尝试了以下,但没有成功。下面是我想归为一类的不同类别的示例。

classes <- c(549,162,210,222,44,96,62,208,525,202,149,442,427,
      564,423,106,422,546,205,560,127,536,34,261,568,
      366,524,401,548,95,156,8,528, 430,527,556,203,554,523,
      501,530,55,252,585,19,540,71,204,502,504, 196,436,48,
      102,526,201,521,23,558,552,118,416,117,216,510,494,
      516,544,518)

所以这对我来说似乎很直观,但它不起作用。

df$chem<- cbind(ifelse(df$class == classes ,1,0))

不用说我是初学者,这可能并不难做到,但我一直在寻找解决这个特殊问题的方法,但我似乎找不到。我错过了什么?谢谢!

4

1 回答 1

5

你要找的%in%不是==

例如

df$chem <- cbind(ifelse(df$class %in% classes ,1,0))

或使用逻辑到数字的转换

df$chem <-  as.numeric(df$class %in% classes)

如果您想要所有类别的单独虚拟变量,df$class那么您可以使用class.ind包中的函数nnet(作为推荐包提供)

library(nnet)

class_ind <- class.ind(df$class)
# add if you want to combine with the original
df_ind <- do.call(cbind, list(df, class.ind(df$class))
于 2012-09-04T02:36:08.323 回答