全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2911 7
2014-10-30
先把代码贴一部分出来:


best=function(outcome,place){
  dat=read.csv("outcome-of-care-measures.csv",colClasses="character")
  subdat=data.frame()
  location=unique(dat$State)  #这一行提取State的所有取值
  if(place in location){  #就是这里出问题,提示错误Error: unexpected 'in' in:
#"  loc=as.vector(location)
  # if(place in"

我的初衷是提取dat里面State属性的所有取值,如果函数中的参数place的值在State中则进行下一步(这里就不贴出来了,无关紧要),然而它却提示if后面多了个in,这是怎么回事呢?应该怎么改正?谢谢!


二维码

扫码加我 拉你入群

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

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

全部回复
2014-10-31 06:13:09
改为 if (place %in% location) {...}
二维码

扫码加我 拉你入群

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

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

2014-10-31 12:54:27
robvsn 发表于 2014-10-31 06:13
改为 if (place %in% location) {...}
嘿,果然行了,谢谢大神~
二维码

扫码加我 拉你入群

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

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

2014-10-31 17:04:40
robvsn 发表于 2014-10-31 06:13
改为 if (place %in% location) {...}
我在后面又遇到问题了......我现在就是要做一个函数把一个表的记录按照第二列的数字升序排序,遇到数字相同的话则按第一列首字母升序排序,就像下面这个表一样:
     [,1]                                                                     [,2]   
[1,] "ST FRANCIS MEDICAL CENTER"                         "13.6"
[2,] "NATCHITOCHES REGIONAL MEDICAL CENTER"    "13.7"
[3,] "BATON ROUGE GENERAL MEDICAL CENTER"       "13.8"
[4,] "OCHSNER FOUNDATION HOSPITAL"                   "14.3"
[5,] "ST TAMMANY PARISH HOSPITAL"                       "14.3"
[6,] "TOURO INFIRMARY"                                          "14.3"

我遇到的问题是我排序的时候明明看到表里面第二列的属性有几个在10以下,可是函数运行出来却没有了第二列属性在10以下的那些记录,就是下面这样:
[,1]                                                                                               [,2]  
[1,] "EAST CARROLL PARISH HOSPITAL"                                         "10.0"
[2,] "LSU HEALTH SCIENCES CENTER - SHREVEPORT"                      "10.1"
[3,] "NORTH OAKS MEDICAL CENTER, LLC"                                     "10.1"
[4,] "ST FRANCIS MEDICAL CENTER"                                              "10.1"
[5,] "LAKEVIEW REGIONAL MEDICAL CENTER"                                "10.2"
[6,] "WASHINGTON ST TAMMANY  REGIONAL MEDICAL CENTER"     "10.2"

可以看到第二列从10.0开始排,但实际上表里面有几条记录第二列是8点几和9点几的,这几条记录却被忽略了。所以我就想问一下究竟是什么原因呢?是不是因为第二列的类型是character呢?如果是的话怎么把它转化成numeric属性呢?真心求解答~
二维码

扫码加我 拉你入群

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

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

2014-10-31 17:28:30
gdufsfit 发表于 2014-10-31 17:04
我在后面又遇到问题了......我现在就是要做一个函数把一个表的记录按照第二列的数字升序排序,遇到数字相 ...
  dat=read.csv("outcome-of-care-measures.csv") # 默认会处理的
  colnames(dat) = c('a','b') # 为了方便举例子,改个列名
  rankedidx = order(dat$b) # 排序
  rankedDat = dat[rankedidx,] # 排序结果

另外 如果想从string转numeric,用as.numeric()
二维码

扫码加我 拉你入群

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

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

2014-11-1 14:29:53
robvsn 发表于 2014-10-31 17:28
dat=read.csv("outcome-of-care-measures.csv") # 默认会处理的
  colnames(dat) = c('a','b') # 为了 ...
好的,我遇到最后一个问题了......我排序之后要打印rankedDat[1,1],结果打印出来下面还有一行levels:...,是不是表示它变成一个factor了?怎么才能让下面levels那一行不显示呢?
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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