R 如何将一个8x4测向仪与一个7x4测向仪组合,以产生一个56x5测向仪,并乘以值
我有一个数据帧R 如何将一个8x4测向仪与一个7x4测向仪组合,以产生一个56x5测向仪,并乘以值,r,dataframe,dplyr,R,Dataframe,Dplyr,我有一个数据帧tech\u change\u supply,看起来像这样: supplysector tech_change_all tech_change_elec tech_change_no_elec aluminum NA .26 .77 cement NA .86 .92
tech\u change\u supply
,看起来像这样:
supplysector tech_change_all tech_change_elec tech_change_no_elec
aluminum NA .26 .77
cement NA .86 .92
chemicals NA 1.32 NA
food processing NA .39 .70
iron and steel NA .02 .58
other manufacturing NA 1.11 1.04
other nonmetallic NA .41 .75
pulp paper wood NA .96 NA
subsector tech_change_all tech_change_elec tech_change_no_elec
boilers 0 0.0 1.0
boilers_CHP 0 0.0 1.0
electrochemical 0 1.0 0.0
feeedstocks 0 0.0 0.0
machine drive 0 1.0 0.0
process heat 0 0.0 1.0
other uses 0 0.5 0.5
数据帧tech\u change\u service
如下所示:
supplysector tech_change_all tech_change_elec tech_change_no_elec
aluminum NA .26 .77
cement NA .86 .92
chemicals NA 1.32 NA
food processing NA .39 .70
iron and steel NA .02 .58
other manufacturing NA 1.11 1.04
other nonmetallic NA .41 .75
pulp paper wood NA .96 NA
subsector tech_change_all tech_change_elec tech_change_no_elec
boilers 0 0.0 1.0
boilers_CHP 0 0.0 1.0
electrochemical 0 1.0 0.0
feeedstocks 0 0.0 0.0
machine drive 0 1.0 0.0
process heat 0 0.0 1.0
other uses 0 0.5 0.5
我需要以某种方式组合这两个数据帧,以便有一个来自tech\u change\u supply
的supplysector列和一个来自tech\u change\u service
的subsector列,其中每个supplysector都有每个subsector(即“Aluminal”重复7次,每个subsector匹配一次)。此外,我需要维护技术变更所有、技术变更电气和技术变更无电气,并使用每个供应商部门的值乘以这些值,但“其他用途”除外,我需要技术变更电气和技术变更无电气的平均值。例如:
supplysector subsector tech_change_all tech_change_elec tech_change_no_elec
aluminum boilers 0 0 .77
aluminum boilers_CHP 0 0 .77
aluminum electrochemical 0 .26 0
aluminum feedstocks 0 0 0
aluminum machine drive 0 .26 0
aluminum process heat 0 0 .77
aluminum other uses 0 .515 .515
这也需要使用base R或dplyr 0.8.1、tidyr 0.8.3来完成。谢谢大家!
数据:
我们可以使用交叉连接将所有组合中的数据放在一起
dplyr
通过使用带有by=character()
的full\u连接来启用交叉连接(所有行的组合)
在此基础上,您可以根据需要使用普通的变异操作进行乘法/平均运算。我将把这个留给你-小心你的NA
值。您可以使用select(-ends_with(“.supply”)、-ends_with(“.service”)
来删除所有未转换的列。您是否尝试过使用命令aggregate来组合这两列?@domiziano我使用aggregate在单个数据帧中创建组合,但当组合两个独立的数据帧时就不行了。@GregorThomas谢谢!编辑标题。
together = full_join(tech_change_supply, tech_change_service, by = character(), suffix = c(".supply", ".service"))