抱歉,我仍然是R中的新手,我很难将下面的新列(“鸡”)添加到我的数据= c,分隔为:黑色(起始单元格34453到6015)和白色(从单元格1开始)到34452)。任何帮助将非常感谢。提前谢谢!
c["chicken"] <- NA
c$chicken[c(1:34452)] = 'white'
c$chicken[c(34453:6015)] = 'black'
答案 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!