2015-05-19 65 views
1

我有8列數據幀。我想將數據框的兩列合併成一列(第6列和第8列)。這兩列都包含相同的數據。基本上,我想刪除「NAS」這樣,有3行「西南」和「東南」的最後一排的將2列合併爲1;除去新生; R中的尺寸數不正確

6th column 8th Column
NA ----------- South West
NA ----------- South West
NA ----------- South West
South East -- NA

我子集的數據幀只拉列6,8(列。我想結合) region_merge = df[,c(6,8)]

我創建下面我自己的函數:

comb_region <- function(df){ if (df[,6]=="NA") df[,6] = df[,8] else df[,6] = df[,6] }

然後我用的應用功能,在我所有的行重複功能:

apply(X = region_merge, MARGIN = 1, FUN = comb_region) 

但是,我得到的錯誤:Error in df[, 6] : incorrect number of dimensions

我是新來的R.有人能幫助我瞭解爲什麼我收到這個錯誤?

另外 - 你們知道一個替代解決方案通過刪除「NAs」合併1列中的2列嗎?

在此先感謝!

+1

代碼中的一個可能的錯誤是,一旦你選擇第6和第8列,你的函數就不應該引用第6和8列,而是第1和第2列。但是,這可能會給你一個不同的錯誤信息。 – gvrocha

+2

您可能想要'region < - ifelse(is.na(df [[6]]),df [[8]],df [[6]])'而不是'apply' –

回答

1

嘗試:

comb_region <- function(df) 
{ 
df[,6]=ifelse(is.na(df[,6]), df[,8], df[,6]); 
df[,8]=ifelse(is.na(df[,8]), df[,6], df[,8]); 
return(df) 
} 
filled_df=comb_region(df_with_nas) 

到NA直接比較通常不起作用:改用is.na。

並注意您傳遞給comb_region的region_merge data.frame只有兩列。

+0

Thanks @Neal Fultz !你的解決方案完美運作 – user4918087