从R中的面板数据生成横截面
我有一个面板数据文件(长格式),我需要将其转换为横截面数据。也就是说,我不仅需要转换为广域格式,而且我需要每个个体只观察一次,包含每个变量的平均值 我想说的是:我在一个数据框中有面板数据(每个个体的大量观察数据),我正在寻找一种简单的方法,在R中生成一个新的数据框,其中包含每个个体的累积数据,即。E每个变量中所有观测值的总和或其平均值。获得波动性的度量也可能很有趣 例如,我有一个包含面板数据的给定数据框panel_data:从R中的面板数据生成横截面,r,panel,R,Panel,我有一个面板数据文件(长格式),我需要将其转换为横截面数据。也就是说,我不仅需要转换为广域格式,而且我需要每个个体只观察一次,包含每个变量的平均值 我想说的是:我在一个数据框中有面板数据(每个个体的大量观察数据),我正在寻找一种简单的方法,在R中生成一个新的数据框,其中包含每个个体的累积数据,即。E每个变量中所有观测值的总和或其平均值。获得波动性的度量也可能很有趣 例如,我有一个包含面板数据的给定数据框panel_data: > individual <- c(1,1,2,2,3,3
> individual <- c(1,1,2,2,3,3)
> var1 <- c(2,3,3,3,4,3)
> panel_data <- data.frame(individual,var1)
> panel_data
individual var1
1 1 2
2 1 3
3 2 3
4 2 3
5 3 4
6 3 3
这只是一个例子。我在很多种类中都需要这个特性,最重要的可能是每个变量的个体内平均值 使用base R或使用流行的包
data.table
或dplyr
可以实现这一点。每个人都有自己的喜好和爱好
您可以非常轻松地执行各种操作来汇总每个人的数据。使用dplyr
语法,您首先可以groupby
individual指定应该对变量“individual”定义的组执行操作。然后,您可以使用指定的功能对组进行汇总
请尝试以下操作:
library("dplyr")
panel_data %>%
group_by(individual) %>%
summarise(sum_var1 = sum(var1), mean_var1=mean(var1))
不要被%%>%%
符号所拖累,它只是链操作的便捷快捷方式:
相当于x%>%f
f(x)
相当于x%>%f(a)
f(x,a)
相当于x%>%f(a)%%>%g(b)
g(f(x,a),b)
data.table
或dplyr
来实现这一点。每个人都有自己的喜好和爱好
您可以非常轻松地执行各种操作来汇总每个人的数据。使用dplyr
语法,您首先可以groupby
individual指定应该对变量“individual”定义的组执行操作。然后,您可以使用指定的功能对组进行汇总
请尝试以下操作:
library("dplyr")
panel_data %>%
group_by(individual) %>%
summarise(sum_var1 = sum(var1), mean_var1=mean(var1))
不要被%%>%%
符号所拖累,它只是链操作的便捷快捷方式:
相当于x%>%f
f(x)
相当于x%>%f(a)
f(x,a)
相当于x%>%f(a)%%>%g(b)
g(f(x,a),b)
%>%
链接的三行构成一个大语句。如果要保存输出,必须执行交叉数据%…%>%摘要(…)
。也可以执行,尽管有些人可能不赞成:面板数据%>%…>%摘要(…)->cross_data
。谢谢,我自己就搞定了!非常感谢您的回复。这似乎在一般情况下是可行的,但如果我尝试将新数据帧存储为对象,即“cross_data”,则与%>%
链接的三行构成一个大语句。如果要保存输出,必须执行cross\u data%…%>%总结(…)
。或者你也可以这样做,尽管有些人可能不赞成:panel\u data%%>%…%%总结(…)->cross_data
。谢谢,我自己就知道了!