首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用多行(变量)切换多列(年份)?

如何用多行(变量)切换多列(年份)?
EN

Stack Overflow用户
提问于 2019-05-04 22:32:55
回答 1查看 46关注 0票数 0

我有下表:

代码语言:javascript
运行
复制
  country   | country code |    variable     | 1990 | 1991 | 1992 | 1993 | ... 
 -----------|--------------|-----------------|------|------|------|------|----- 
  Argentina | ARG          | employment in a |  .40 |  .35 |  .37 |  .43 | ... 
  Argentina | ARG          | employment in b |  .35 |  .30 |  .32 |  .29 | ... 
  Argentina | ARG          | employment in c |  .25 |  .35 |  .31 |  .28 | ... 
-
  Brazil    | BRA          | employment in a |  .45 |  .35 |  .33 |  .44 | ... 
  Brazil    | BRA          | employment in b |  .30 |  .33 |  .34 |  .27 | ... 
  Brazil    | BRA          | employment in c |  .25 |  .32 |  .33 |  .29 | ... 
  ...       | ...          | ...             |  ... |  ... |  ... |  ... | ... 

但我需要将它改为这种格式:

代码语言:javascript
运行
复制
  country   | country code | year | employment in a | employment in b | employment in c 
 -----------|--------------|------|-----------------|-----------------|-----------------
  Argentina | ARG          | 1990 |             .40 |             .35 |             .25 
  Argentina | ARG          | 1991 |             .35 |             .30 |             .35 
  Argentina | ARG          | 1992 |             .37 |             .32 |             .31 
  Argentina | ARG          | 1993 |             .43 |             .29 |             .28 
  Argentina | ARG          |  ... |             ... |             ... |             ... 
-
  Brazil    | BRA          | 1990 |             .45 |             .30 |             .25 
  Brazil    | BRA          | 1991 |             .35 |             .33 |             .32 
  Brazil    | BRA          | 1992 |             .33 |             .34 |             .33 
  Brazil    | BRA          | 1993 |             .44 |             .27 |             .29 
  Brazil    | BRA          |  ... |             ... |             ... |             ...  
  ...       | ...          |  ... |             ... |             ... |             ...  

我有更多的变量,国家和年份,但表格应该充分说明这个问题。

我试过gather()reshape(),但没能解决我的问题。有人能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-04 23:07:32

这必须是重复的,但是当我找到合适的dupe目标时,可以使用tidyversegather+spread调用来解决这个问题。

代码语言:javascript
运行
复制
library(tidyverse)
df %>% gather(year, val, -(1:3)) %>% spread(variable, val)
## A tibble: 8 x 6
#  country   country_code year  employment_in_a employment_in_b employment_in_c
#  <chr>     <chr>        <chr>           <dbl>           <dbl>           <dbl>
#1 Argentina ARG          1990             0.4            0.35            0.25
#2 Argentina ARG          1991             0.35           0.3             0.35
#3 Argentina ARG          1992             0.37           0.32            0.31
#4 Argentina ARG          1993             0.43           0.290           0.28
#5 Brazil    BRA          1990             0.45           0.3             0.25
#6 Brazil    BRA          1991             0.35           0.33            0.32
#7 Brazil    BRA          1992             0.33           0.34            0.33
#8 Brazil    BRA          1993             0.44           0.27            0.290

样本数据

代码语言:javascript
运行
复制
df <- read_table2("country    country_code     variable      1990  1991  1992  1993
  Argentina  ARG           employment_in_a   .40   .35   .37   .43
  Argentina  ARG           employment_in_b   .35   .30   .32   .29
  Argentina  ARG           employment_in_c   .25   .35   .31   .28
  Brazil     BRA           employment_in_a   .45   .35   .33   .44
  Brazil     BRA           employment_in_b   .30   .33   .34   .27
  Brazil     BRA           employment_in_c   .25   .32   .33   .29 ")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55987356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档