簡體   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