【问题标题】:R studio: Creating a pivot-like table of a subset of data from excelR studio:从excel中创建一个数据子集的数据透视表
【发布时间】:2019-02-02 11:28:12
【问题描述】:
  • 我有一个非常大的 Excel 电子表格,希望在 R 中分析
  • 电子表格有四列:年龄、性别、就业状况、工资
  • 表格如下所示 1 (已就业 = 1-9,失业 = “空白单元格”)
  • 我想输出数据透视表之类的内容,让我可以了解按年龄和性别划分的人们的平均工资,但仅限于受雇的子集(不包括就业列中的空白)

我是一名医科学生,对 R 不是很熟悉!感谢任何帮助!

【问题讨论】:

  • 在其他人否决您的问题之前,我建议您阅读 R4DS 的第 5 章 (r4ds.had.co.nz/transform.html) 并学习如何使用 tidyverse。阅读完该章后,您在此处描述的所有内容都应该像几行代码一样简单。
  • 看看 Janitor 包,它确实试图做一些像数据透视表这样的事情。
  • @Hao:Base R 的答案可能会很短。 Tidyverse 解决方案并非普遍比 base R 短。对于 KIT:在尝试模拟数据透视表时查看 base.functions:“tapply”和“by”。学习在'['函数的i位置使用逻辑运算进行选择。在发布问题时也要尝试(并记录下来)。只是 b/c 你是一名医科学生,不应该免除你在这里学习规则的责任。 (我是一名医生,需要研究文档。)

标签: r statistics


【解决方案1】:

带data.table:

# example data
N <- 25
df <- data.frame(
    age        = sample(18:65, N, TRUE),
    sex        = sample(1:2,   N, TRUE),
    employment = sample(1:10,  N, TRUE),
    wages      = sample(1:50,  N, TRUE)*10
)


# convert to data.table
library(data.table)
setDT(df)

# pivot
df[employment != "", .(avg_wages = mean(wages)), by=.(age, sex)]

用英文解释'pivot'部分:

  • 保留“就业”不为空的行
  • 创建一个名为“avg_wages”的新变量,它是“工资”的平均值
  • 但是我们按“年龄”和“性别”取平均工资

【讨论】:

  • 我确定这是重复的,但我有 5 分钟的时间,所以这里有一个快速解决方案。
猜你喜欢
  • 2019-06-20
  • 1970-01-01
  • 2017-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多