繁体   English   中英

R中的加权连接或匹配

weighted join or match in R

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在处理来自加利福尼亚州全州数据库 ( https://statewidedatabase.org/election.html ) 的选举数据。 我正在尝试将他们的选区级别选举结果转换为 2010 年人口普查街区级别的结果。 我有选区选举结果

> sov_results
# A tibble: 20,744 x 136
   COUNTY FIPS  SRPREC_KEY SRPREC ADDIST CDDIST SDDIST BEDIST TOTREG DEMREG REPREG AIPREG GRNREG LIBREG NLPREG REFREG DCLREG MSCREG TOTVOTE
    <dbl> <chr> <chr>       <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>   <dbl>
 1     49 06097 060971002    1002      2      5      2      2     29      0      0      0      0      0      0      0      0      0      18
 2     49 06097 060971003    1003      2      2      2      2      1      0      0      0      0      0      0      0      0      0       0
 3     49 06097 060971005    1005      2      2      2      2    106      0      0      0      0      0      0      0      0      0      67
 4     49 06097 060971006    1006      2      5      2      2      2      0      0      0      0      0      0      0      0      0       2
 5     49 06097 060971007    1007      2      2      2      2     56      0      0      0      0      0      0      0      0      0      42
 6     49 06097 060971008    1008      2      5      2      2    148      0      0      0      0      0      0      0      0      0     109
 7     49 06097 060971009    1009      2      5      2      2    137      0      0      0      0      0      0      0      0      0      97
 8     49 06097 060971012    1012      2      5      2      2     21      0      0      0      0      0      0      0      0      0      16
 9     49 06097 060971017    1017      4      5      2      2    723      0      0      0      0      0      0      0      0      0     591
10     49 06097 060971018    1018      2      2      2      2     14      0      0      0      0      0      0      0      0      0      10
# ... with 20,734 more rows, and 117 more variables: DEMVOTE <dbl>, REPVOTE <dbl>, AIPVOTE <dbl>, GRNVOTE <dbl>, LIBVOTE <dbl>,
#   NLPVOTE <dbl>, REFVOTE <dbl>, DCLVOTE <dbl>, MSCVOTE <dbl>, PRCVOTE <dbl>, ABSVOTE <dbl>, ASSDEM01 <dbl>, ASSDEM02 <dbl>,
#   ASSDEM03 <dbl>, ASSDEM04 <dbl>, ASSDEM05 <dbl>, ASSDEM06 <dbl>, ASSDEM07 <dbl>, ASSDEM08 <dbl>, ASSGRN01 <dbl>, ASSIND01 <dbl>,
#   ASSLIB01 <dbl>, ASSPAF01 <dbl>, ASSREP01 <dbl>, ASSREP02 <dbl>, ASSREP03 <dbl>, ASSREP04 <dbl>, CNGAIP01 <dbl>, CNGDEM01 <dbl>,
#   CNGDEM02 <dbl>, CNGDEM03 <dbl>, CNGDEM04 <dbl>, CNGDEM05 <dbl>, CNGDEM06 <dbl>, CNGDEM07 <dbl>, CNGDEM08 <dbl>, CNGDEM09 <dbl>,

以及带有权重的转换键。

> conversion
# A tibble: 398,299 x 13
   SRPREC FIPS  ELECTION TYPE   SRPREC_KEY BLOCK_KEY        TRACT BLOCK BLKREG SRTOTREG PCTSRPREC BLKTOTREG PCTBLK
    <dbl> <chr> <chr>    <chr>  <chr>      <chr>            <dbl> <dbl>  <dbl>    <dbl>     <dbl>     <dbl>  <dbl>
 1     NA 06097 p20      sr_blk 06097nan   060970000000000      0     0      1       NA     NA            1  100  
 2   1002 06097 p20      sr_blk 060971002  060971525011014 152501  1014     26       29     89.7         26  100  
 3   1002 06097 p20      sr_blk 060971002  060971525013008 152501  3008      3       29     10.3          3  100  
 4   1003 06097 p20      sr_blk 060971003  060971526005068 152600  5068      1        1    100            1  100  
 5   1005 06097 p20      sr_blk 060971005  060971526005000 152600  5000     14      106     13.2         43   32.6
 6   1005 06097 p20      sr_blk 060971005  060971526005003 152600  5003     12      106     11.3         12  100  
 7   1005 06097 p20      sr_blk 060971005  060971526005004 152600  5004     12      106     11.3         20   60  
 8   1005 06097 p20      sr_blk 060971005  060971526005006 152600  5006      5      106      4.72         5  100  
 9   1005 06097 p20      sr_blk 060971005  060971526005008 152600  5008     24      106     22.6         24  100  
10   1005 06097 p20      sr_blk 060971005  060971526005020 152600  5020     28      106     26.4         28  100 

我想知道如何将这些选区结果与人口普查区块相匹配,从而使人口普查区块从选区结果中获得适当数量的选票(基于 PCTSRPREC 列,该列指示该选区的百分比属于人口普查区块)。

例如,我想加入,以便将 SRPREC_KEY 060971005 的 13.2% 分配给 BLOCK 5000。这将是 TOTVOTE 的 13.2%(四舍五入为整数)、DEMVOTE 的 13.2%、ASSDEM03 投票的 13.2%,等等。在 R 中有没有函数或方法可以做到这一点?

1 个回复

我认为您正在寻找连接/合并操作,然后是简单的乘法。

library(dplyr)
select(conversion, SRPREC_KEY, BLOCK, PCTSRPREC) %>%
  left_join(., sov_results, by = "SRPREC_KEY") %>%
  mutate(across(TOTREG:TOTVOTE, ~ . * PCTSRPREC / 100))
#    SRPREC_KEY BLOCK PCTSRPREC COUNTY FIPS SRPREC ADDIST CDDIST SDDIST BEDIST  TOTREG DEMREG REPREG AIPREG GRNREG LIBREG NLPREG REFREG DCLREG MSCREG TOTVOTE
# 1    06097nan     0        NA     NA   NA     NA     NA     NA     NA     NA      NA     NA     NA     NA     NA     NA     NA     NA     NA     NA      NA
# 2   060971002  1014     89.70     49 6097   1002      2      5      2      2 26.0130      0      0      0      0      0      0      0      0      0 16.1460
# 3   060971002  3008     10.30     49 6097   1002      2      5      2      2  2.9870      0      0      0      0      0      0      0      0      0  1.8540
# 4   060971003  5068    100.00     49 6097   1003      2      2      2      2  1.0000      0      0      0      0      0      0      0      0      0  0.0000
# 5   060971005  5000     13.20     49 6097   1005      2      2      2      2 13.9920      0      0      0      0      0      0      0      0      0  8.8440
# 6   060971005  5003     11.30     49 6097   1005      2      2      2      2 11.9780      0      0      0      0      0      0      0      0      0  7.5710
# 7   060971005  5004     11.30     49 6097   1005      2      2      2      2 11.9780      0      0      0      0      0      0      0      0      0  7.5710
# 8   060971005  5006      4.72     49 6097   1005      2      2      2      2  5.0032      0      0      0      0      0      0      0      0      0  3.1624
# 9   060971005  5008     22.60     49 6097   1005      2      2      2      2 23.9560      0      0      0      0      0      0      0      0      0 15.1420
# 10  060971005  5020     26.40     49 6097   1005      2      2      2      2 27.9840      0      0      0      0      0      0      0      0      0 17.6880
1 如何计算R中的加权和?

我有以下data.frame: 效果(EFF)和频率(FRQ)与A1有关。 我想计算我的G1和G2的总和。 例如,在第一行中,如果G1 = A1,则其效果为0.0125。 但是,如果G1 = A2,那么我想翻转效果的符号并将其设为-0.125。 如果G2 = A1,我希望G2的效 ...

2 R / igraph中的加权边

我正在使用R&the igraph包绘制用graphml编写的图形,我想使用此语法中包含的weight参数 我可以用它获得价值 但在计算df = degree(f)之前我不知道如何使用weight 有关详细信息:所有节点都相互连接,权重为1 /(number_of_node ...

2014-08-19 11:04:17 1 4143   r/ igraph
3 r中的表要加权

我正在尝试运行交叉表/列联表,但需要通过加权变量对其进行加权。 这是一些示例数据。 我已经运行它来获得一个常规的交叉表 为了获得加权频率,我尝试了 Hmisc 包(如果您知道更好的包,请告诉我) 我不确定我哪里出错了,但它没有运行,所以任何帮助都会很好。 或者,如果您知道如何在另一个包中 ...

4 R中的加权采样

我有一个数据帧data 。 在每一行i都分配了一个data$ww的权重。 现在我想制作一个示例new_data data ,加权df$ww 。 我尝试过subset但速度很慢。 有更快的方法吗? ...

2014-07-29 22:24:27 1 9017   r
5 R中的加权相关

我正在尝试为各个位置输出一个相关矩阵。 行名“ PC1”,“ PC2”等代表主要组成部分。 由于解释的主要成分的百分比方差(因而权重)从PC1减少到PC4,因此我需要运行Pearson相关,以便将PC的权重考虑在内。 换句话说,在确定位置之间的相关性方面,第1行比第2行更重要,第2行比 ...

6 R中的“加权”回归

我创建了一个类似下面的脚本来执行我称之为“加权”回归的操作: 你可以看到在temp.df ,每一行都有它的权重,我的意思是总共有1178个样本但是对于具有相同bp和age行,它们合并为1行并在weight列中表示。 我在lm函数中使用了weight参数,然后我用另一个数据帧交叉检查 ...

7 匹配数据的加权t检验R

我使用倾向得分匹配将案例与控件进行匹配(matchIt软件包,比率为1:2)。 现在,我想使用权重(已知权重)来获得两组年龄变量的独立t检验统计量。 我之前使用过相同的代码,并且可以正常工作。 它适用于20 ob​​s的样本数据集; 做10 obs或整个数据集(856 obs)。 ...

8 R中的加权逻辑回归

给出成功比例加上样本大小和自变量的样本数据,我在R中尝试逻辑回归。 下面的代码做了我想要的,似乎给出了明智的结果,但看起来不是一个明智的方法; 实际上,它会使数据集的大小翻倍 制作一个类似的图表 这看起来相当合理。 但我不满意使用datf2作为通过复制数据来分离成功 ...

9 R中的加权频率表

我希望在 R 中为某个变量 (INTERVIEW_DAY) 创建一个频率表,但考虑到另一个变量作为权重 (WEIGHT)。 我试图用包data.table做到这data.table 。 不过,我很想用 R-Base 包来做。 下面你会找到我想要的表格类型,但仍然没有加权,这就是我想要学习的。 ...

10 R中的加权线性回归

这个问题已经在这里有了答案: R:使用“ weights”参数和使用手动重新加权的数据时,lm()结果有所不同 1回答 我想用加权因子对分析化学校准曲线进行线性回归。 x值为浓度,假定没有错误。 y值是仪器响应,并且假定变化与浓度成比例。 因此,我想对线性回归 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM