为了账号安全,请及时绑定邮箱和手机立即绑定

添加包含整数列的分箱值的列

添加包含整数列的分箱值的列

呼唤远方 2019-07-27 11:14:16
添加包含整数列的分箱值的列我有一个包含几列的数据框,其中一列是rank,一个介于1和20之间的整数。我想创建另一个包含bin值的列,如“1-4”,“5-10”,“11- 15“,”16-20“。这样做最有效的方法是什么?我看起来像这样的数据框(.csv格式):rank,name,info1,steve,red3,joe,blue6,john,green3,liz,yellow15,jon,pink我想在数据框中添加另一列,所以它会是这样的:rank,name,info,binValue1,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 $的值在给定范围内,则只添加另一列。谢谢。
查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

查看?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


查看完整回答
反对 回复 2019-07-27
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-07-27
?
HUWWW

TA贡献1874条经验 获得超12个赞

我们可以smart_cut从包中使用cutr

# devtools::install_github("moodymudskipper/cutr")library(cutr)

使用@Andrie的样本数据:

x$bins <- smart_cut(x$rank,
                    c(1,5,11,16), 
                    labels = ~paste0(.y[1],'-',.y[2]-1), 
                    simplify = FALSE)# 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 11-15

更多关于cutr和smart_cut


查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 463 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信