2013-07-30 61 views
1

我有一個數據框與一個稱爲濃度數值的colmn。如何在R中添加基於數值條件的值的新列?

Concentration 
700657 
850789 
90
1011234 
750001 

我想添加一個新值爲700k +,800k +,900k +,1000k +的列的CDrange。新列中的值將根據濃度值來分配,例如,如果值爲700657,則計算值應爲700k +,如果值爲850789,則值爲800k +等等。如何在不使用if循環的情況下編寫函數。新列看起來應該像

Concentration  CDrange   
700657    700k+ 
850789    800k+ 
90k+ 
1011234    1000k+ 
750001    700k+ 

請提供有關如何繼續的一些建議。我曾嘗試使用子集函數,但我無法將數據幀保留在一起。

+0

你沒有識別的語言。我推斷基於** cbind **標籤的R,所以我提交了一個編輯來添加** r **標籤。如果這不正確,請編輯您的帖子以指定語言。 –

回答

3

請參閱?cut?findInterval

df$CDrange <- cut(df$Concentration, c(700000, 800000, 900000, 1000000, Inf), 
        labels=c("700k+","800k+","900k+","1000k+") right=FALSE) 
2

檢查這個例子:

x <- c(800000, 800001, 800999, 1234567) 
paste0(x %/% 1000, ifelse((x %% 1000)>0, "k+", "k")) 

#[1] "800k" "800k+" "800k+" "1234k+"