Aggiunta di una colonna che contiene il valore del contenitore di un’altra colonna

Ho un dataframe con poche colonne, una di queste colonne è rank, un numero intero compreso tra 1 e 20. Voglio creare un’altra colonna che contenga un valore bin come “1-4”, “5-10”, “11- 15 “,” 16-20 “.

Qual è il modo più efficace per farlo?

il frame dei dati che ho assomiglia a questo (formato .csv):

rank,name,info 1,steve,red 3,joe,blue 6,john,green 3,liz,yellow 15,jon,pink 

e voglio aggiungere un’altra colonna al dataframe, quindi sarebbe come questo:

 rank,name,info,binValue 1,steve,red,"1-4" 3,joe,blue,"1-4" 6,john,green, "5-10" 3,liz,yellow,"1-4" 15,jon,pink,"11-15" 

Il modo in cui lo sto facendo ora non funziona, dato che mi piacerebbe mantenere intatto il data.frame e aggiungere semplicemente un’altra colonna se il valore di df $ graduato rientra in un determinato intervallo. grazie.

Vedere ?cut e specificare breaks (e forse labels ).

 x$bins <- cut(x$rank, breaks=c(0,4,10,15), labels=c("1-4","5-10","10-15")) x # rank name info bins # 1 1 steve red 1-4 # 2 3 joe blue 1-4 # 3 6 john green 5-10 # 4 3 liz yellow 1-4 # 5 15 jon pink 10-15 
 dat <- "rank,name,info 1,steve,red 3,joe,blue 6,john,green 3,liz,yellow 15,jon,pink" x <- read.table(textConnection(dat), header=TRUE, sep=",", stringsAsFactors=FALSE) x$bins <- cut(x$rank, breaks=seq(0, 20, 5), labels=c("1-5", "6-10", "11-15", "16-20")) x rank name info bins 1 1 steve red 1-5 2 3 joe blue 1-5 3 6 john green 6-10 4 3 liz yellow 1-5 5 15 jon pink 11-15