从 R 中的面板数据生成横截面
Generate cross-section from panel data in R
我有一个面板数据文件(长格式),我需要将其转换为截面数据。也就是说,我不仅需要转换为宽格式,而且我需要对每个人进行一次观察,其中包含每个变量的平均值。
这是我想要的:我在数据框中有面板数据(每个人的一些观察结果),我正在寻找一种在 R 中生成包含累积数据的新数据框的简单方法对于每个人,i。 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
结果应如下所示:
> cross_data
individual var1
1 1 5
2 2 6
3 3 7
现在这只是一个例子。我在许多变体中都需要这个特征,最重要的一个可能是每个变量的个体内均值。
有一些方法可以使用基础 R 或使用流行的包 data.table
或 dplyr
来做到这一点。每个人都有自己的喜好,mine is dplyr
.
您可以非常轻松地对每个人的数据执行各种操作 summarise
。使用 dplyr
语法,您首先 group_by
个人指定应在变量 "individual" 定义的组上执行操作。然后,您可以 summarise
使用您指定的功能创建您的群组。
尝试以下操作:
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)
我有一个面板数据文件(长格式),我需要将其转换为截面数据。也就是说,我不仅需要转换为宽格式,而且我需要对每个人进行一次观察,其中包含每个变量的平均值。
这是我想要的:我在数据框中有面板数据(每个人的一些观察结果),我正在寻找一种在 R 中生成包含累积数据的新数据框的简单方法对于每个人,i。 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
结果应如下所示:
> cross_data
individual var1
1 1 5
2 2 6
3 3 7
现在这只是一个例子。我在许多变体中都需要这个特征,最重要的一个可能是每个变量的个体内均值。
有一些方法可以使用基础 R 或使用流行的包 data.table
或 dplyr
来做到这一点。每个人都有自己的喜好,mine is dplyr
.
您可以非常轻松地对每个人的数据执行各种操作 summarise
。使用 dplyr
语法,您首先 group_by
个人指定应在变量 "individual" 定义的组上执行操作。然后,您可以 summarise
使用您指定的功能创建您的群组。
尝试以下操作:
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)