【问题标题】:How to create a dummy variable in R如何在 R 中创建一个虚拟变量
【发布时间】:2012-09-11 02:40:39
【问题描述】:

我试图通过从 HOUSE 列中提取数字来为“好”和“坏”创建一个虚拟变量。我想要做的是,如果 HOUSE 列中的值为 1、2、9,则房子为“好”,否则为“坏”)

我正在粘贴我的 data.frame 对象的 dput 输出。

## dput output assigned to the housetype variable

structure(list(Price = c(10L, 20L, 31L, 41L, 52L, 63L, 45L, 63L, 
64L, 45L), Location = structure(c(4L, 7L, 6L, 3L, 2L, 4L, 5L, 
1L, 6L, 8L), .Label = c("AK", "ATL", "BOS", "DC", "GA", "MA", 
"NYC", "PA"), class = "factor"), HOUSE = c(1L, 1L, 1L, 2L, 6L, 
7L, 8L, 9L, 10L, 11L)), .Names = c("Price", "Location", "HOUSE"
), class = "data.frame", row.names = c(NA, -10L))

如何创建一个虚拟变量,让每个变量都包含其他信息? (价格和位置)

谢谢!!!

【问题讨论】:

  • Automatic Dummy Variables in R 的可能重复项
  • 我认为这有点不同,因为我不只是试图对前 10 个值进行分组。我正在尝试获取特定数值的虚拟变量。
  • 你可能想看看ifelse%in%
  • 您仍在寻找%in%,如该答案中所述......
  • 类似within(DF, quality <- ifelse(HOUSE %in% c(1,2,9), 'good','bad'))

标签: r


【解决方案1】:

你可以这样做:

housetype$quality <- ifelse(housetype$HOUSE %in% c(1,2,9), "good", "bad")
housetype
#        Price Location HOUSE quality
# 1     10       DC     1    good
# 2     20      NYC     1    good
# 3     31       MA     1    good
# 4     41      BOS     2    good
# 5     52      ATL     6     bad
# 6     63       DC     7     bad
# 7     45       GA     8     bad
# 8     63       AK     9    good
# 9     64       MA    10     bad
# 10    45       PA    11     bad

最好不要创建一个字符向量(“好”或“坏”),而是创建一个标志变量,即逻辑类型(TRUE 或 FALSE)的向量。它使用更少的内存并且通常更易于使用:

housetype$is.good <- housetype$HOUSE %in% c(1,2,9)
housetype
#    Price Location HOUSE quality is.good
# 1     10       DC     1    good    TRUE
# 2     20      NYC     1    good    TRUE
# 3     31       MA     1    good    TRUE
# 4     41      BOS     2    good    TRUE
# 5     52      ATL     6     bad   FALSE
# 6     63       DC     7     bad   FALSE
# 7     45       GA     8     bad   FALSE
# 8     63       AK     9    good    TRUE
# 9     64       MA    10     bad   FALSE
# 10    45       PA    11     bad   FALSE

【讨论】:

  • 其实我还有一个问题。一旦我将组划分为“好”和“坏”房子,我如何比较好房子和坏房子的平均值和中位数?
  • 查看aggregate 函数(base 包)或ddplyplyr 包)。你也可以搜索一下 SO,这个问题很多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 2013-09-23
  • 2020-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多