【发布时间】:2020-12-04 10:39:23
【问题描述】:
我有一些 2009 年至 2019 年 100 多个国家/地区的长格式面板数据。
df <- structure(list(area_name = c("Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Albania", "Albania", "Albania", "Albania", "Albania",
"Albania", "Albania", "Albania", "Albania"), area_code = c("AFG",
"AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "ALB",
"ALB", "ALB", "ALB", "ALB", "ALB", "ALB", "ALB", "ALB"), area_group = c("Asia-Pacific",
"Asia-Pacific", "Asia-Pacific", "Asia-Pacific", "Asia-Pacific",
"Asia-Pacific", "Asia-Pacific", "Asia-Pacific", "Asia-Pacific",
"Eastern Europe", "Eastern Europe", "Eastern Europe", "Eastern Europe",
"Eastern Europe", "Eastern Europe", "Eastern Europe", "Eastern Europe",
"Eastern Europe"), pillar_name = c("Governance", "Governance",
"Governance", "Governance", "Governance", "Governance", "Investment Environment",
"Investment Environment", "Investment Environment", "Governance",
"Governance", "Governance", "Governance", "Governance", "Governance",
"Investment Environment", "Investment Environment", "Investment Environment"
), element_name = c("Executive Constraints", "Government Effectiveness",
"Government Integrity", "Political Accountability", "Regulatory Quality",
"Rule of Law", "Contract Enforcement", "Investor Protection",
"Property Rights", "Executive Constraints", "Government Effectiveness",
"Government Integrity", "Political Accountability", "Regulatory Quality",
"Rule of Law", "Contract Enforcement", "Investor Protection",
"Property Rights"), year = c("score_2009", "score_2009", "score_2009",
"score_2009", "score_2009", "score_2009", "score_2009", "score_2009",
"score_2009", "score_2009", "score_2009", "score_2009", "score_2009",
"score_2009", "score_2009", "score_2009", "score_2009", "score_2009"
), score = c(5.94, 5.6, 5.82, 3.85, 4.62, 5.68, 4.21, 4.51, 8.75,
8.51, 9.87, 7.79, 11.5, 7.18, 6.37, 9.2, 11.3, 13.2)), row.names = c(NA,
-18L), class = "data.frame")
我的目标是为每个国家/地区添加另一行,以平均给定年份的不同分数。
最后我希望它看起来像这样:
area_name area_code area_group pillar_name element_name year score
<chr> <chr> <chr> <chr> <chr> <chr> <dbl>
1 Afghanistan AFG Asia-Pacific Governance Executive Constraints score_2009 5.94
2 Afghanistan AFG Asia-Pacific Governance Government Effectiveness score_2009 5.60
3 Afghanistan AFG Asia-Pacific Governance Government Integrity score_2009 5.82
4 Afghanistan AFG Asia-Pacific Governance Political Accountability score_2009 3.85
5 Afghanistan AFG Asia-Pacific Governance Regulatory Quality score_2009 4.62
6 Afghanistan AFG Asia-Pacific Governance Rule of Law score_2009 5.68
7 Afghanistan AFG Asia-Pacific Investment Environment Contract Enforcement score_2009 4.21
8 Afghanistan AFG Asia-Pacific Investment Environment Investor Protection score_2009 4.51
9 Afghanistan AFG Asia-Pacific Investment Environment Property Rights score_2009 8.75
10 Afghanistan AFG Asia-Pacific Avg Avg score_2009 5.44
11 Albania ALB Eastern Europe Governance Executive Constraints score_2009 8.51
12 Albania ALB Eastern Europe Governance Government Effectiveness score_2009 9.87
13 Albania ALB Eastern Europe Governance Government Integrity score_2009 7.79
14 Albania ALB Eastern Europe Governance Political Accountability score_2009 11.5
15 Albania ALB Eastern Europe Governance Regulatory Quality score_2009 7.18
16 Albania ALB Eastern Europe Governance Rule of Law score_2009 6.37
17 Albania ALB Eastern Europe Investment Environment Contract Enforcement score_2009 9.20
18 Albania ALB Eastern Europe Investment Environment Investor Protection score_2009 11.3
19 Albania ALB Eastern Europe Investment Environment Property Rights score_2009 13.2
20 Albania ALB Eastern Europe Avg Avg score_2009 9.44
我对 R 相当陌生,不确定如何处理这个问题。任何帮助将不胜感激!
【问题讨论】:
-
为了让我们帮助您,请提供reproducible example。例如,要生成最小数据集,您可以使用
head()、subset()或索引。然后使用dput()给我们一些可以立即放入R 的东西。另外,请确保您知道该怎么做when someone answers your question。更多信息可以在 Stack Overflow 的help center 上找到。谢谢! -
很难说没有可重现的例子,但使用管道,你可以尝试:
df %>% pivot_wider(names_from = area_group, values_from = score) %>% group_by(area_group) %>% tally() %>% mutate(Average = avg(score))%>% pivot_longer(specify_columns, names_from =, values_to =),如果你的数据框是 df
标签: r panel-data