首页 > 解决方案 > 如何制作列值是变量的频率表?

问题描述

我有一个名为 JOB 的 DF。在那个 DF 我有 4 列。个人ID;工作; FT(全职或兼职,1 表示全职,2 表示兼职)和 YEAR。在这个 DF 中,每个人每年只能有一份全职工作。这是他们在这一年中获得大部分收入的全职工作。

东风
PERSON_ID 工作 FT 年
   1 分析师 1 2018
   1 分析师 1 2019
   1 分析师 1 2020
   2 教练 1 2018
   2 教练 1 2019
   2 分析师 1 2020
   3 园丁 1 2020
   4 教练 1 2018
   4 教练 1 2019
   4 分析师 1 2020
   4 教练 2 2019
   4 园丁 2 2019

我想在以下问题的行中获得不同的频率:2019 年和 2020 年发生了哪些全职工作变化?

我只想查看 FT=1 的变化。

我希望我的茶几看起来像这样

2019 2020 频率
分析师 分析师 1
教练分析师 2
 北美园丁 1

我想查看数据,以便我可以说 2 人从他们的教练工作转到分析师工作。1 名分析师没有换工作,1 人以园丁的身份进入劳动力市场。

我试图摆弄表格功能,但甚至没有接近我想要的。我无法让 YEAR 去单独的变量。

如果我能在基础 R 中做到,10 分奖励 :)

谢谢您的帮助

标签: rfrequency

解决方案


不是 R 基础但有效:

library(dplyr)
library(tidyr)
data %>%
  filter(FT==1, YEAR %in% c(2019, 2020)) %>%
  group_by(YEAR, JOB, PERSON_ID) %>%
  tally() %>%
  pivot_wider(names_from = YEAR, values_from = JOB) %>%
  select(-PERSON_ID) %>%
  group_by(`2019`, `2020`) %>%
  summarise(n = n())


  `2019`  `2020`       n
  <chr>   <chr>    <int>
1 Analyst Analyst      1
2 Coach   Analyst      2
3 NA      Gardener     1

推荐阅读