如何将分类标签添加到R中的新列

时间:2015-07-08 17:33:58

标签: r

抱歉,我仍然是R中的新手,我很难将下面的新列(“鸡”)添加到我的数据= c,分隔为:黑色(起始单元格34453到6015)和白色(从单元格1开始)到34452)。任何帮助将非常感谢。提前谢谢!

c["chicken"] <- NA
c$chicken[c(1:34452)] = 'white'
c$chicken[c(34453:6015)] = 'black'

2 个答案:

答案 0 :(得分:0)

这应该有效,可能会导致拼写错误:

vector.length <- nrow(c)
c$chicken <- NA
c$chicken[1:34452] = 'white'
c$chicken[34453:vector.length] = 'black'

作为此类问题的一般资源,我建议Quick-R

答案 1 :(得分:0)

你的问题有些含糊不清,所以我会回答我认为是你的问题。

我相信你的问题是,如果你有一个因子(即变量鸡),你不能简单地添加一个新的因子水平而不修改变量。为了说明这一点,尝试运行它并查看R报告的错误:

exampleData <- data.frame(chicken = rep('black', 4) ) exampleData #Examine what we created exampleData$chicken[3:4] <- 'white' #attempting to add a new level not defined yet

要为因子添加新关卡,只需使用levels功能:

levels(exampleData$chicken) <- c('black', 'white') exampleData$chicken[3:4] <- 'white' exampleData #Now that the level has been added, works fine!

或者,您可以将变量保留为字符,而不是因子,然后您可以添加所需的任何变量,而无需担心级别。这是一把双刃剑:它不会捕捉拼写错误,因为这是一个因素!见下文。

exampleData <- data.frame(chicken = rep('black', 4), stringsAsFactors = FALSE) exampleData$chicken[3] <- 'white' #no need to relevel since it's not a factor exampleData$chicken[4] <- 'whiet' #but doesn't catch typo, so there are now #3 unique values of chicken!