Добавление столбца, содержащего значение bin другого столбца
У меня есть блок данных с несколькими столбцами, один из этих столбцов - это ранги, целое число от 1 до 20. Я хочу создать еще один столбец, который содержит значение ячейки, например "1-4", "5-10", "11-15", "16-20".
Каков наиболее эффективный способ сделать это?
фрейм данных, который у меня есть (формат .csv):
rank,name,info
1,steve,red
3,joe,blue
6,john,green
3,liz,yellow
15,jon,pink
и я хочу добавить еще один столбец в dataframe, поэтому он будет выглядеть следующим образом:
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"
То, как я делаю это сейчас, не работает, так как я хотел бы сохранить data.frame неповрежденным и просто добавить другой столбец, если значение df $ranked находится в заданном диапазоне. спасибо.
Ответы
Ответ 1
См. ?cut
и укажите breaks
(и, возможно, 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
Ответ 2
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