有没有一种方法可以将行转换为R中的cols?

时间:2020-06-08 15:00:26

标签: r

我正在尝试将月份作为列,将每种货币的平均价格低于其月份。有谁知道我该如何解决这个问题?

cd_firstYear
      Currency month avgprice
1 binance-coin     4   4.3500
2      bitcoin     4 138.5817
3 bitcoin-cash     4 138.5817

3 个答案:

答案 0 :(得分:0)

这是pivot_wider中使用tidyr的一种方法:

library(tidyr)
pivot_wider(cd_firstYear, values_from = "avgprice", names_from = "month")
## A tibble: 3 x 2
#  Currency        `4`
#  <fct>          <dbl>
#1 binance-coin    4.35
#2 bitcoin       139.  
#3 bitcoin-cash  139. 

答案 1 :(得分:0)

使用软件包pivot_wider中的函数tidyr

library(dplyr)
library(tidyr)

cd_firstYear %>%
  pivot_wider(
    id_cols = Currency,
    names_from = month,
    values_from = avgprice
  )
## A tibble: 3 x 2
#  Currency        `4`
#  <chr>         <dbl>
#1 binance-coin   4.35
#2 bitcoin      139.  
#3 bitcoin-cash 139.  

数据

cd_firstYear <- read.table(text = "
      Currency month avgprice
1 binance-coin     4   4.3500
2      bitcoin     4 138.5817
3 bitcoin-cash     4 138.5817
", header = TRUE)

答案 2 :(得分:0)

我们可以使用dcast中的data.table

library(data.table)
dcast(setDT(df1), Currency ~ month)
#      Currency        4
#1: binance-coin   4.3500
#2:      bitcoin 138.5817
#3: bitcoin-cash 138.5817

数据

df1 <- structure(list(Currency = c("binance-coin", "bitcoin", "bitcoin-cash"
), month = c(4L, 4L, 4L), avgprice = c(4.35, 138.5817, 138.5817
)), class = "data.frame", row.names = c(NA, -3L))