从R中的面板数据生成横截面

从R中的面板数据生成横截面,r,panel,R,Panel,我有一个面板数据文件(长格式),我需要将其转换为横截面数据。也就是说,我不仅需要转换为广域格式,而且我需要每个个体只观察一次,包含每个变量的平均值 我想说的是:我在一个数据框中有面板数据(每个个体的大量观察数据),我正在寻找一种简单的方法,在R中生成一个新的数据框,其中包含每个个体的累积数据,即。E每个变量中所有观测值的总和或其平均值。获得波动性的度量也可能很有趣 例如,我有一个包含面板数据的给定数据框panel_data: > individual <- c(1,1,2,2,3,3

我有一个面板数据文件(长格式),我需要将其转换为横截面数据。也就是说,我不仅需要转换为广域格式,而且我需要每个个体只观察一次,包含每个变量的平均值

我想说的是:我在一个数据框中有面板数据(每个个体的大量观察数据),我正在寻找一种简单的方法,在R中生成一个新的数据框,其中包含每个个体的累积数据,即。E每个变量中所有观测值的总和或其平均值。获得波动性的度量也可能很有趣

例如,我有一个包含面板数据的给定数据框panel_data:

> 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)

有很多方法可以使用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)

欢迎来到SO!请阅读:欢迎来到SO!请阅读:非常感谢您的回复。这在一般情况下似乎是可行的,但如果我尝试将新数据帧存储为对象,我会。E“交叉数据-用
%>%
链接的三行构成一个大语句。如果要保存输出,必须执行
交叉数据%…%>%摘要(…)
。也可以执行,尽管有些人可能不赞成:
面板数据%>%…>%摘要(…)->cross_data
。谢谢,我自己就搞定了!非常感谢您的回复。这似乎在一般情况下是可行的,但如果我尝试将新数据帧存储为对象,即“cross_data”,则与
%>%
链接的三行构成一个大语句。如果要保存输出,必须执行
cross\u data%…%>%总结(…)
。或者你也可以这样做,尽管有些人可能不赞成:
panel\u data%%>%…%%总结(…)->cross_data
。谢谢,我自己就知道了!