1
假设我有以下数据框。根据另一列的值创建一个新的数据框列
dat <- data.frame(city=c("Chelsea","Brent","Bremen","Olathe","Lenexa","Shawnee"),
tag=c(rep("AlabamaCity",3), rep("KansasCity",3)))
我想包括第三列Tag2,它将是每个状态来自标记列的区域。所以前三个城市最终将成为'南部',最后三个将成为'中西部'。数据看起来像。
city tag tag2
1 Chelsea AlabamaCity South
2 Brent AlabamaCity South
3 Bremen AlabamaCity South
4 Olathe KansasCity Midwest
5 Lenexa KansasCity Midwest
6 Shawnee KansasCity Midwest
我试过下面的命令,但它没有创建一个新的列。 谁能告诉我什么是错的。
fixit <- function(dat) {
for (i in 1:nrow(dat)) {
Words = strsplit(as.character(dat[i, 'tag']), " ")[[1]]
if(any(Words == 'Alabama')) {
dat[i, 'tag2'] <- "South"
}
if(any(Words == 'Kansas')) {
dat[i, 'tag2'] <- "Midwest"
}
}
return(dat)
}
感谢您的帮助。
我应该加;你的'strsplit()'失败的原因是''tag''元素中没有空格'''',因此这些字符串没有被分割。你在某个地方犯了一个错字吗? –
感谢您的帮助。我仍然不知道如何在R中进行调试,但我想我必须开始研究这个问题。 – ATMathew
好的 - 最简单的事情,我在这里做的只是运行'debug(fixit)'然后'fixit(dat)',它会让你进入调试器,你可以一次一行地执行代码。 –