繁体   English   中英

你如何将行转换为 r 中的列?

[英]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 中,您可以使用dplyrtidyr

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM