[英]How do you transpose rows into columns in r?
我有这张桌子:
ID Day Score
23928 Monday 75
394838 Tuesday 83
230902 Wednesday 90
329832 Thursday 40
…
并继续,重复一天几次。
我想转置日期列来获取这张表
MONDAY Tuesday Wednesday …… Sunday
78 4343 343 433
有没有办法在 r 中做到这一点?
我们可以使用data.table::transpose
library(data.table)
data.table::transpose(df1[-1], make.names = 'Day')
或使用base R
as.data.frame.list(with(df1, setNames(Score, Day)))
df1 <- structure(list(ID = c(23928L, 394838L, 230902L, 329832L),
Day = c("Monday",
"Tuesday", "Wednesday", "Thursday"), Score = c(75L, 83L, 90L,
40L)), class = "data.frame", row.names = c(NA, -4L))
假设您的数据存储在 data.frame 中,您可以使用dplyr
和tidyr
:
df %>%
select(-ID) %>%
pivot_wider(names_from=Day, values_from=Score)
返回
# A tibble: 1 x 4
Monday Tuesday Wednesday Thursday
<dbl> <dbl> <dbl> <dbl>
1 75 83 90 40
使用t
并设置名称:
setNames(as.data.frame(t(df$Score)), df$Day)
Output
# Monday Tuesday Wednesday Thursday
# 75 83 90 40
你可以使用 tidyr:
library(tidyr)
data <- data.frame(day = c("Monday", "Tuesday", "Wednesday", "Thursday"),
val = c(12,75,9,38) )
data %>% spread(day,val)
结果:
Monday Thursday Tuesday Wednesday
12 38 75 9
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.