全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2955 7
2016-08-05
麻烦大家帮忙看看分组结果不正确,这个函数哪里出问题,谢谢
提示: In if (x <= 1) { ... :
  the condition has length > 1 and only the first element will be used
代码如下:
library(data.table)
fun<-function(x){
  if(x<=1){
    y="<1"
  }
  else if(1<x & x<=20){
    y="1~20"
  }
  else if(20<x & x<=40){
    y="20~40"
  }
  else if(40<x & x<=60){
    y="40~60"
  }
  else if(60<x & x<=80){
    y="60~80"
  }
  else if(80<x & x<=100){
    y="80~100"
  }
  else if(100<x & x<=120){
    y="100~120"
  }
  else if(120<x & x<=150){
    y="120~150"
  }
  else if(150<x & x<=200){
    y="150~200"
  }
  else if(200<x & x<=300){
    y="200~300"
  }
  else   
    y=">300"
  return(y)
}
set.seed(112)
dt<-data.table(name=sample(LETTERS,50,TRUE),score=rep(1:50))
dt[,list(score=sum(score),分组=fun(score)),by="name"]



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-8-6 07:17:51
你的数据是数值型吗
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-8-6 13:18:21
换成这一句
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-8-6 16:35:18
这个可以不用if 函数写,推荐一种简洁的做法:
用findInterval查找对应区间,然后用mapvalues进行标签替换
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-8-7 04:38:17
if 只能作用在一个element,不能判断一个vector
你的x是一个vector
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-8-10 16:32:29
zhou1_20 发表于 2016-8-6 13:18
换成这一句
谢谢,这是什么原理呢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群