R语言长数据转为宽数据01

例子01

library(tidyverse)
df = tibble(
  x = 1:6,
  y = c("A","A","B","B","C","C"),
  z = c(2.13,3.65,1.88,2.30,6.55,4.21))
df

df %>% select(y,z)%>% group_by(y) %>% mutate(n=row_number()) %>% 
  pivot_wider(names_from = y,values_from = z)

转换前如下:

> df
# A tibble: 6 × 3
      x y         z
  <int> <chr> <dbl>
1     1 A      2.13
2     2 A      3.65
3     3 B      1.88
4     4 B      2.3 
5     5 C      6.55
6     6 C      4.21

转换后如下:

> df %>% select(y,z)%>% group_by(y) %>% mutate(n=row_number()) %>% pivot_wider(names_from = y,values_from = z)
# A tibble: 2 × 4
      n     A     B     C
  <int> <dbl> <dbl> <dbl>
1     1  2.13  1.88  6.55
2     2  3.65  2.3   4.21
对例子01进行解释:df数据框由长变宽的时候,必须得先选择y,z列,不然无法进行正常的转换,会显示错误的结果,另外,直接使用y,z列也会出现错误的结果,因为y列中的A,B,C都是重复的,所以,在转换之前需要新增一列n,以实现对y列中重复值的区分。

例子02

未完待续

欢迎大家留言讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值