【发布时间】:2020-10-01 09:49:26
【问题描述】:
我有一个类似面板的数据集,随着时间的推移具有相同观察的多个实例。我有一个变量来计算特定公司每年的出现次数(例如,A 公司在 XXXX 年有 10 台活动机器),我还想创建一个变量来计算特定用户曾经拥有的机器数量(即全部-时间计数)。
这是我为此编写的一行代码的示例:
### Creates a column that counts the number of unique machines by company name all time
df_panel <- df_panel %>% group_by(Company_name, Machine_name) %>% summarise(Machine_count_alltime = n())
我遇到的问题是它返回一个像这样的输出表:
Company Name Machine Name n
Company A Machine Y 1
Company B Machine X1 1
Company B Machine X2 1
Company B Machine Z 2
Company C Machine K 5
Company C Machine U 2
在上表中,n 是特定 Machine Name 在整个数据年中出现的次数的计数(例如机器 K 在 5 年中出现)。我想要计算每个 Company Name 多年来作为附加列的唯一机器数量,而不是上表中生成的每个 Machine Name 的实例。它应该看起来像这样:
Company Name Machine Name
Company A Machine Y 1
Company B Machine X1 3
Company B Machine X2 3
Company B Machine Z 3
Company C Machine K 2
Company C Machine U 2
我只将Machine Name 列包含在group_by 中,因为我想确保特定机器不会在总历史计数变量中重复计算。我也尝试过在pipe operators 中使用tally() 和sum() 之类的命令,但只遇到错误,因为名称是字符,或者没有适用的摘要方法等。我要去吗?关于这个错误的方式?非常感谢任何帮助。
不喜欢包 - dplyr、base R 等我都可以。
【问题讨论】:
-
您能否编辑您的问题以包含
dput(df_panel)的输出?如果行数很多,也可以dput(head(df_panel))。
标签: r group-by dplyr summarize