R语言数据reshape:dplyr包函数pivot_wider

pivot_wider函数

1.pivot_wider 的用法:

pivot_wider 用于将数据从长格式变为宽格式,增加列数,减少行数。它将某些列的值转换为新的列,并使用这些值填充新列。以下是一些关键参数:

  • names_from 用于指定要从中获取新列名的列。可以是一个或多个列。
  • values_from 用于指定要填充新列的值的来源列。可以是一个或多个列。
  • names_prefix 可选,添加到每个变量名的前缀字符串。
  • names_sep 可选,用于将 names_fromvalues_from 中的多个变量值连接成单个字符串,作为新列的名称。
  • names_glue 可选,替代 names_sepnames_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 可选,用于在输出中每个单元格的值上应用的函数。

2.pivot_wider 的实例:

假设有以下数据框,其中包含个体的一些观测值:

# 假设有以下数据框
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 将数据从长格式转换为宽格式,以创建新的列:

library(dplyr)

# 使用 pivot_wider 进行转换
data_wide <- data_long %>%
  pivot_wider(
    names_from = Variable,
    values_from = Value,
    names_prefix = "Var"
  )

# 查看转换后的数据
print(data_wide)

这将生成如下的宽格式数据:

# 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)都被转换为一个新的列。

3.pivot_wider 实例2——对标stata:

对于这样一个数据,分别用stata和R去处理,代码应当是什么样的呢?
处理前

reshape wide value, i(year)  j(treat)

// value是被shape的变量
// i(year)是shape后的unit
// j(treat)是shape后的尾缀

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后的前缀

处理后

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mengke25

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值