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

添加列,该列包含整数列的绑定值。

添加列,该列包含整数列的绑定值。

互换的青春 2019-07-17 18:36:22
添加列,该列包含整数列的绑定值。我有一个包含几个列的dataframe,其中一个列是秩,一个介于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我想在dataframe中添加另一列,所以如下所示: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.framework不变,如果df$放的值在给定的范围内,只需添加另一列即可。谢谢。
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

看见?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-17
?
天涯尽头无女友

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

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-17
?
达令说

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

我们可以用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

更多关于切割和智能切割


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

添加回答

举报

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