例子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
未完待续
欢迎大家留言讨论