小编Gri*_*ees的帖子

R中的频率加权,将结果与Stata进行比较

我试图从明尼苏达大学IPUMS数据集的数据分析1990年美国人口普查R.我正在使用该survey包,因为数据是加权的.只是拿家庭数据(并忽略人员变量以保持简单),我试图计算hhincome(家庭收入)的平均值.为此,我使用具有以下代码的函数创建了一个调查设计对象svydesign():

> require(foreign)
> ipums.household <- read.dta("/path/to/stata_export.dta")
> ipums.household[ipums.household$hhincome==9999999, "hhincome"] <- NA # Fix missing 
> ipums.hh.design <- svydesign(id=~1, weights=~hhwt, data=ipums.household)
> svymean(ipums.household$hhincome, ipums.hh.design, na.rm=TRUE)
      mean     SE
[1,] 37029 17.365
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但是,如果我尝试相同的计算Stata(使用代码表示同一数据集的不同部分),我会得到不同的标准错误:

use "C:\I\Hate\Backslashes\stata_export.dta"
replace hhincome = . if hhincome == 9999999
(933734 real changes made, 933734 to missing)

mean hhincome [fweight = hhwt] # The code from the link above.

Mean …
Run Code Online (Sandbox Code Playgroud)

r stata

16
推荐指数
2
解决办法
6951
查看次数

如何在hdf5中高效保存python pandas数据帧并将其作为R中的数据帧打开?

我认为标题涵盖了这个问题,但要阐明:

熊猫 Python包具有用于在python保持表数据的数据帧的数据类型.它还有一个方便的hdf5文件格式接口,所以pandas DataFrames(和其他数据)可以使用简单的类似dict的界面保存(假设你安装了pytables)

import pandas 
import numpy
d = pandas.HDFStore('data.h5')
d['testdata'] = pandas.DataFrame({'N': numpy.random.randn(5)})
d.close()
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但是,如果我然后尝试将相同的hdf5加载到RI中,请看事情并非如此简单:

> library(hdf5)
> hdf5load('data.h5')
NULL
> testdata
$block0_values
         [,1]      [,2]      [,3]       [,4]      [,5]
[1,] 1.498147 0.8843877 -1.081656 0.08717049 -1.302641
attr(,"CLASS")
[1] "ARRAY"
attr(,"VERSION")
[1] "2.3"
attr(,"TITLE")
[1] ""
attr(,"FLAVOR")
[1] "numpy"

$block0_items
[1] "N"
attr(,"CLASS")
[1] "ARRAY"
attr(,"VERSION")
[1] "2.3"
attr(,"TITLE")
[1] ""
attr(,"FLAVOR")
[1] "numpy"
attr(,"kind")
[1] "string"
attr(,"name")
[1] "N."

$axis1
[1] 0 1 2 3 …
Run Code Online (Sandbox Code Playgroud)

python r hdf5 pandas data.table

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

Python 匹配大小写(开关)性能

我期望 Python match/case对每个案例有相同的时间访问权限,但似乎我错了。有什么好的解释为什么吗?

让我们使用以下示例:

def match_case(decimal):
    match decimal:
        case '0':
            return "000"
        case '1':
            return "001"
        case '2':
            return "010"
        case '3':
            return "011"
        case '4':
            return "100"
        case '5':
            return "101"
        case '6':
            return "110"
        case '7':
            return "111"
        case _:
            return "NA"
Run Code Online (Sandbox Code Playgroud)

并定义一个快速工具来测量时间:

import time
def measure_time(funcion):
    def measured_function(*args, **kwargs):
        init = time.time()
        c = funcion(*args, **kwargs)
        print(f"Input: {args[1]} Time: {time.time() - init}")
        return c
    return measured_function

@measure_time
def repeat(function, input):
    return [function(input) for i …
Run Code Online (Sandbox Code Playgroud)

python match switch-statement python-3.x

12
推荐指数
2
解决办法
9040
查看次数

标签 统计

python ×2

r ×2

data.table ×1

hdf5 ×1

match ×1

pandas ×1

python-3.x ×1

stata ×1

switch-statement ×1