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)',它會讓你進入調試器,你可以一次一行地執行代碼。 –