提问人:TheBoomerang 提问时间:5/2/2023 最后编辑:zx8754TheBoomerang 更新时间:5/2/2023 访问量:55
将多列转换为宽格式
Convert multiple columns into wide format
问:
我有一个关于将数据转换为宽格式的最佳方法的问题,并希望以一种可以理解的方式提出这个问题。请考虑以下代码:
day <- c("mon", "tues", "wed", "thur")
hours <- c(2, 4, 6, 8)
cost <- c(100, 200, 300, 400)
df <- data.frame(day, hours, cost)
在我制作的这个数据帧中,该表采用 4x3 格式。我想将其转换为 2x4 格式。请考虑下面的代码,看看我想转换为的格式:
type <- c("hours", "cost")
mon <- c(2, 100)
tues <- c(4, 200)
wed <- c(6, 300)
thur <- c(8, 400)
df1 <- data.frame(type, mon, tues, wed, thur)
我试过使用更宽的枢轴,但我猜我在这里有点偏离了目标。任何解决方案将不胜感激
答:
3赞
akrun
5/2/2023
#1
尝试使用data.table::transpose
data.table::transpose(df, make.names = 'day', keep.names = 'type')
-输出
type mon tues wed thur
1 hours 2 4 6 8
2 cost 100 200 300 400
使用 ,做一个pivot_longer,然后用 重塑为宽tidyverse
pivot_wider
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = -day, names_to = 'type') %>%
pivot_wider(names_from = day, values_from = value)
-输出
# A tibble: 2 × 5
type mon tues wed thur
<chr> <dbl> <dbl> <dbl> <dbl>
1 hours 2 4 6 8
2 cost 100 200 300 400
评论