pivot_wider
函数pivot_wider
的用法:pivot_wider
用于将数据从长格式变为宽格式,增加列数,减少行数。它将某些列的值转换为新的列,并使用这些值填充新列。以下是一些关键参数:
names_from
: 用于指定要从中获取新列名的列。可以是一个或多个列。
values_from
: 用于指定要填充新列的值的来源列。可以是一个或多个列。
names_prefix
: 可选,添加到每个变量名的前缀字符串。
names_sep
: 可选,用于将 names_from
或 values_from
中的多个变量值连接成单个字符串,作为新列的名称。
names_glue
: 可选,替代 names_sep
和 names_prefix
,可以使用 names_from
列(和特殊的 .value
)创建自定义列名。
names_vary
: 可选,用于控制 names_from
值相对于 values_from
列名的组合顺序,有 "fastest" 和 "slowest" 两个选项。
names_expand
: 可选,是否在进行变换之前通过 expand()
对 names_from
列中的值进行扩展,生成更多的列。
names_sort
: 可选,是否对列名进行排序。
names_repair
: 可选,用于处理输出中无效列名的情况,默认为 "check_unique"。
values_fill
: 可选,当遇到缺失值时用于填充的值。
values_fn
: 可选,用于在输出中每个单元格的值上应用的函数。
pivot_wider
的实例:假设有以下数据框,其中包含个体的一些观测值:
xxxxxxxxxx
# 假设有以下数据框
data_long <- data.frame(
ID = c(1, 2, 3, 1, 2, 3),
Variable = c("A", "A", "A", "B", "B", "B"),
Value = c(10, 15, 20, 30, 25, 35)
)
使用 pivot_wider
将数据从长格式转换为宽格式,以创建新的列:
x
library(dplyr)
# 使用 pivot_wider 进行转换
data_wide <- data_long %>%
pivot_wider(
names_from = Variable,
values_from = Value,
names_prefix = "Var"
)
# 查看转换后的数据
print(data_wide)
这将生成如下的宽格式数据:
xxxxxxxxxx
# A tibble: 3 × 3
ID VarA VarB
<dbl> <dbl> <dbl>
1 1 10 30
2 2 15 25
3 3 20 35
在这个例子中,names_from
指定要用于创建新列名的列,values_from
指定要填充新列的值的来源列,names_prefix
添加了新列名的前缀。这样,每个不同的变量(A、B)都被转换为一个新的列。
pivot_wider
实例2——对标stata:对于这样一个数据,分别用stata和R去处理,代码应当是什么样的呢?
xxxxxxxxxx
reshape wide value, i(year) j(treat)
// value
是被shape的变量
// i(year)
是shape后的unit
// j(treat)
是shape后的尾缀
xxxxxxxxxx
merged_temp <- merged_temp %>%
filter(!is.na(treat)) %>%
pivot_wider(names_from = treat,
values_from = value,
names_prefix = "var")
values_from = value
,是被shape的变量
names_from = treat
,是shape后的尾缀
names_prefix = "var"
,是shape后的前缀