小编ako*_*ako的帖子

剪切和标签/打破长度冲突

我正在使用cut函数为barplot直方图准备数据,但在我的标签和中断之间仍然存在看似不一致的问题:

Error in cut.default(sample(1:1e+05, 500, T), breaks = sq, labels = sprintf("$%.0f", : labels/breaks length conflict

这是一个例子.我假装它是收入数据,使用$ 10,000到100,000美元的序列.我使用相同的变量生成中断和标签,在标签面上进行次要格式化.我认为,与字符向量相比,它们可能由于某种原因而具有不同的长度,但它们看起来仍具有相同的长度.

> sq<-seq(0,100000,10000)
> cut(sample(1:100000, 500, T),breaks=sq,labels=sprintf("$%.0f",sq))
> length(sprintf("$%.0f",sq))
[1] [11]
> length(sq)
[1] [11]
Run Code Online (Sandbox Code Playgroud)

编辑:

根据@thelatemail和@Josh O'Brien的建议,我将代码更改为了这些,并且工作正常. cut(sample(1:100000, 500, T),breaks=sq,labels=sprintf("$%.0f",sq[-1]))

cut r

12
推荐指数
1
解决办法
1万
查看次数

R:因子水平,重新编码为'其他'

我使用的因素很少,并且通常会发现它们易于理解,但我常常对特定操作的细节模糊不清.目前,我正在编写/折叠类别,几乎没有观察到"其他",我正在寻找一个快速的方法来做到这一点 - 我有一个或许20级的变量,但我有兴趣将它们中的一堆折叠成一个.

data <- data.frame(employees = sample.int(1000,500),
                   naics = sample(c('621111','621112','621210','621310','621320','621330','621340','621391','621399','621410','621420','621491','621492','621493','621498','621511','621512','621610','621910','621991','621999'),
                                  100, replace=T))
Run Code Online (Sandbox Code Playgroud)

以下是我感兴趣的级别,以及它们在不同向量中的标签.

#levels and labels
top8 <-c('621111','621210','621399','621610','621330',
         '621310','621511','621420','621320')
top8_desc <- c('Offices of physicians',
               'Offices of dentists',
               'Offices of all other miscellaneous health practitioners',
               'Home health care services',
               'Offices of Mental Health Practitioners',
               'Offices of chiropractors',
               'Medical Laboratories',
               'Outpatient Mental Health and Substance Abuse Centers',
               'Offices of optometrists')
Run Code Online (Sandbox Code Playgroud)

我可以使用该factor()调用,将它们全部枚举,每次类别几乎没有观察时将其分类为"其他".

假设上面top8top8_desc上面是实际的前8位,那么声明data$naics为因子变量的最佳方法是什么,以便对值进行相应top8的编码并将其他所有内容重新编码为other

r r-factor

11
推荐指数
2
解决办法
3982
查看次数

链表只读

我有一个访问2003(mdb)数据库的住房项目我每季度更新一次我们当地的规划办公室.我们办公室的其他人可以从看到相同的数据中受益.我认为最简单的方法是给它们一个单独的访问数据库(无论是版本2003还是2007),从它链接到我更新的源表.但是,为了防止它们在查看时无意中更改源数据,我想使链接表只读.

有关如何限制Access 2007的链接表的访问权限的任何提示?

permissions ms-access ms-access-2007 linked-tables

9
推荐指数
2
解决办法
2万
查看次数

将行类型的变量传递给ggplot linetype

我是ggplot的新手所以请耐心等待.我出来的图表增长预测为35小面积的地区这是一个阴谋即使使用美妙的不健康的量directlabels库.但是我需要所有系列进行初步筛选.

挑战是使其可读.我找到了@Ben Bolker使用大量不同颜色的修复,但是在改变线型方面遇到了麻烦.35系列不需要是唯一的,但我想使用12种不同的类型来使单个系列更容易阅读.

我的计划是创建一个包含12种可能类型的35个元素的随机列表,并将其作为linetype参数传递,但我无法使其工作,但错误:

Error: Aesthetics must either be length one, or the same length as the dataProblems:lty
Run Code Online (Sandbox Code Playgroud)

我在linetype列表中有35个值.当然,我希望类型,颜色和所有内容都能反映在图例中.

融化的数据看起来像这样; 对35个系列中的每一个进行了9年的观察:

> simulation_long_index[16:24,]    
      year    geography    value
16    2018    sfr_2    101.1871
17    2019    sfr_2    101.1678
18    2020    sfr_2    101.2044
19    2012    sfr_3    100.0000
20    2013    sfr_3    100.1038
21    2014    sfr_3    100.2561
22    2015    sfr_3    100.0631
23    2016    sfr_3    100.8071
24    2017    sfr_3    101.2405    
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我的代码:

lty <- data.frame(lty=letters[1:12][sample(1:12, 35,replace=T)])

g3<-ggplot(data=simulation_long_index,
   aes(
     x=as.factor(year), 
     y=value, 
     colour=geography,
     group=geography,
     linetype=lty$lty))+
       geom_line(size=.65) + …
Run Code Online (Sandbox Code Playgroud)

charts r ggplot2

5
推荐指数
1
解决办法
5429
查看次数

pandas/matplotlib:刻面条形图

我正在制作一系列带有两个分类变量和一个数字的数据条形图.我所拥有的是下面的内容,但我喜欢做的是通过其中一个分类变量进行facet_wrap分析ggplot.我有一个有点工作的例子,但我得到了错误的绘图类型(行而不是条形),我在循环中对数据进行子集化 - 这不是最好的方法.

## first try--plain vanilla
import pandas as pd
import numpy as np
N = 100

## generate toy data
ind = np.random.choice(['a','b','c'], N)
cty = np.random.choice(['x','y','z'], N)
jobs = np.random.randint(low=1,high=250,size=N)

## prep data frame
df_city = pd.DataFrame({'industry':ind,'city':cty,'jobs':jobs})
df_city_grouped = df_city.groupby(['city','industry']).jobs.sum().unstack()
df_city_grouped.plot(kind='bar',stacked=True,figsize=(9, 6))
Run Code Online (Sandbox Code Playgroud)

这给出了这样的东西:

  city industry  jobs
0    z        b   180
1    z        c   121
2    x        a    33
3    z        a   121
4    z        c   236
Run Code Online (Sandbox Code Playgroud)

firstplot

但是,我希望看到的是这样的:

## R code
library(plyr)
df_city<-read.csv('/home/aksel/Downloads/mockcity.csv',sep='\t')

## …
Run Code Online (Sandbox Code Playgroud)

python r matplotlib ggplot2 pandas

5
推荐指数
1
解决办法
7448
查看次数

正则表达式:对数字进行反向引用,增加它

简单的正则表达式问题:

我想用一个字符串+一些数字(比如10)替换字符串中的页码.我想我可以使用反向引用捕获匹配的页码,对其进行操作并将其用作替换参数re.sub.

这工作(只传递值):

def add_pages(x):
    return x

re.sub("(?<=Page )(\d{2})",add_pages(r"\1") ,'here is Page 11 and here is Page 78\nthen there is Page 65',re.MULTILINE)
Run Code Online (Sandbox Code Playgroud)

屈服,当然, 'here is Page 11 and here is Page 78\nthen there is Page 65'

现在,如果我更改add_pages函数来修改传递的反向引用,我会收到错误.

def add_pages(x):
        return int(x)+10


re.sub("(?<=Page )(\d{2})",add_pages(r"\1") ,'here is Page 11 and here is Page 78\nthen there is Page 65',re.MULTILINE)

ValueError: invalid literal for int() with base 10: '\\1'
Run Code Online (Sandbox Code Playgroud)

,因为传递给add_pages函数的内容似乎是文字反向引用,而不是它引用的内容.

如果没有将所有匹配的数字提取到列表然后处理和添加,我该怎么做?

python regex backreference

5
推荐指数
1
解决办法
364
查看次数

numpy/scipy:经过一段时间后,让一个系列向另一个系列汇聚

我在熊猫数据框中有许多系列,代表每年观察到的费率.

对于一个实验,我希望这些系列中的一些系列的费率能够在最后一年中收敛到其他系列的费率之一.

例如,假设我有这些数据,并且我认为列a是一个有意义的目标,使得列b渐近地接近,例如,以小的,甚至大小的增量(或减少;并不重要)的十年期间.

我当然可以在一个循环中这样做,但我想知道是否有一种更通用numpyscipy矢量化的方式使一个系列方法另一个渐近地下架.

rate               a         b                  
year                                                                       
2006               0.393620  0.260998          
2007               0.408620  0.260527
2008               0.396732  0.257396 
2009               0.418029  0.249123 
2010               0.414246  0.253526  
2011               0.415873  0.256586  
2012               0.414616  0.253865     
2013               0.408332  0.257504    
2014               0.401821  0.259208  
Run Code Online (Sandbox Code Playgroud)

python numpy scipy pandas

5
推荐指数
1
解决办法
447
查看次数

pandas:groupby和变量权重

我有一个数据集,每个观察都有权重,我想准备加权摘要,groupby但是生锈了如何最好地做到这一点.我认为这意味着自定义聚合功能.我的问题是如何正确处理不是逐项数据,而是分组数据.也许这意味着最好是分步而不是一步到位.

在伪代码中,我正在寻找

#first, calculate weighted value
for each row:
  weighted jobs = weight * jobs
#then, for each city, sum these weights and divide by the count (sum of weights)
for each city:
  sum(weighted jobs)/sum(weight)
Run Code Online (Sandbox Code Playgroud)

我不知道如何处理"为每个城市" - 分成自定义聚合函数并访问组级摘要.

模拟数据:

import pandas as pd
import numpy as np
np.random.seed(43)

## prep mock data
N = 100
industry = ['utilities','sales','real estate','finance']
city = ['sf','san mateo','oakland']
weight = np.random.randint(low=5,high=40,size=N)
jobs = np.random.randint(low=1,high=20,size=N)
ind = np.random.choice(industry, N)
cty = np.random.choice(city, N)
df_city …
Run Code Online (Sandbox Code Playgroud)

python group-by weighted-average pandas

3
推荐指数
1
解决办法
3051
查看次数

GGplot2:geom_hex标签

我想为geom_hex添加标签,这引发了两个问题:

  1. 我如何得到他们的坐标;
  2. 我如何提取他们的计数值?

最小的例子:

pipeline <- read.csv(url('http://dl.dropboxusercontent.com/u/7446674/pipeline.csv'),sep="\t",header=T)
pipeline <- pipeline[pipeline$Units>0,]

ggplot(pipeline,aes(x=Longitude,y=Latitude))+
    #stat_density2d(n=25,aes(fill=..level..), geom="polygon") +
      geom_hex(bins=12)+
      coord_equal(ratio = 1/1)+
      theme_bw()+
      ggtitle('San Francisco Development Pipeline\nQ2 2013')
Run Code Online (Sandbox Code Playgroud)

(另外,在geom_hex上,如果有人知道称重是否已经实现,我也有兴趣了解它) 在此输入图像描述

r ggplot2

2
推荐指数
1
解决办法
732
查看次数

错误:read.csv调用中的意外符号

R中出现意外的符号错误.请参阅下文:

Error: unexpected symbol in infants.csv <- read.csv("C:\\Users\\alcos001\\Desktop\\Data for PubH7405\\infants.csv" header=TRUE)

我完全迷失了意想不到的符号.有人看到了吗?这是一个错字还是错误的命令?

谢谢

r

1
推荐指数
1
解决办法
1万
查看次数

R提取文本直到,不包括x

我有一堆混合长度的字符串,但都嵌入了一年.我试图只提取文本部分,这是一切,直到数字开始和lookeahead断言有问题,假设这是这种提取的正确方法.

这是我所拥有的(返回不匹配):

>grep("\\b.(?=\\d{4})","foo_1234_bar",perl=T,value=T)

在这个例子中,我希望仅提取,foo但可能有几个,混合长度,_在年份之前分开.

regex grep r

0
推荐指数
1
解决办法
425
查看次数

R:linux上的readBin和writeBin

我想以二进制格式编写(以后检索)数据.我试图得到一个最小的例子,至少工作到气味测试的水平(读取输入应该看起来像书面输出),但我还没有得到它,并且始终正确.我的机器是一个带有小端的linux,但由于这是常量,我从调用中省略了它.我也不确定size在写入中指定参数是否更好,或者将其保留.无论如何,加载的输入看起来不像out:

out<-seq(1,50,2)

##write
write<-file('~/output.txt','wb')
writeBin(out,con=write,size=4)
close(write)

##read
read<-file('~/output.txt','rb')
readBin(con=read,what=numeric(),n=length(out))
# [1] 3.200001e+01 3.276801e+04 1.048576e+06 1.677722e+07 1.006633e+08 4.026532e+08     1.610613e+09 6.442452e+09 1.503239e+10 3.006478e+10 6.012955e+10 1.202591e+11
close(read)
Run Code Online (Sandbox Code Playgroud)

file-io r

0
推荐指数
1
解决办法
919
查看次数