美文网首页
tidyr包常用函数操作

tidyr包常用函数操作

作者: 多啦A梦詹 | 来源:发表于2020-02-22 09:38 被阅读0次

    如何把蹂躏数据框

    library(dplyr)
    library(tidyr)
    tdata <- mtcars[1:10, 1:3]
    tdata <- data.frame(name = rownames(tdata), tdata)
    knitr::kable(tdata)
    
    name mpg cyl disp
    Mazda RX4 Mazda RX4 21.0 6 160.0
    Mazda RX4 Wag Mazda RX4 Wag 21.0 6 160.0
    Datsun 710 Datsun 710 22.8 4 108.0
    Hornet 4 Drive Hornet 4 Drive 21.4 6 258.0
    Hornet Sportabout Hornet Sportabout 18.7 8 360.0
    Valiant Valiant 18.1 6 225.0
    Duster 360 Duster 360 14.3 8 360.0
    Merc 240D Merc 240D 24.4 4 146.7
    Merc 230 Merc 230 22.8 4 140.8
    Merc 280 Merc 280 19.2 6 167.6
    gather宽变长,“key”和“value”都是新增的列,后面表示要合并的列
    g1 <- gather(tdata, key = "Key", value = "Value", cyl, disp, 
        mpg)
    knitr::kable(g1)
    
    name Key Value
    Mazda RX4 cyl 6.0
    Mazda RX4 Wag cyl 6.0
    Datsun 710 cyl 4.0
    Hornet 4 Drive cyl 6.0
    Hornet Sportabout cyl 8.0
    Valiant cyl 6.0
    Duster 360 cyl 8.0
    Merc 240D cyl 4.0
    Merc 230 cyl 4.0
    Merc 280 cyl 6.0
    Mazda RX4 disp 160.0
    Mazda RX4 Wag disp 160.0
    Datsun 710 disp 108.0
    Hornet 4 Drive disp 258.0
    Hornet Sportabout disp 360.0
    Valiant disp 225.0
    Duster 360 disp 360.0
    Merc 240D disp 146.7
    Merc 230 disp 140.8
    Merc 280 disp 167.6
    Mazda RX4 mpg 21.0
    Mazda RX4 Wag mpg 21.0
    Datsun 710 mpg 22.8
    Hornet 4 Drive mpg 21.4
    Hornet Sportabout mpg 18.7
    Valiant mpg 18.1
    Duster 360 mpg 14.3
    Merc 240D mpg 24.4
    Merc 230 mpg 22.8
    Merc 280 mpg 19.2
    g2 <- gather(tdata, key = "Key", value = "Value", cyl:disp)
    knitr::kable(g2)
    
    name mpg Key Value
    Mazda RX4 21.0 cyl 6.0
    Mazda RX4 Wag 21.0 cyl 6.0
    Datsun 710 22.8 cyl 4.0
    Hornet 4 Drive 21.4 cyl 6.0
    Hornet Sportabout 18.7 cyl 8.0
    Valiant 18.1 cyl 6.0
    Duster 360 14.3 cyl 8.0
    Merc 240D 24.4 cyl 4.0
    Merc 230 22.8 cyl 4.0
    Merc 280 19.2 cyl 6.0
    Mazda RX4 21.0 disp 160.0
    Mazda RX4 Wag 21.0 disp 160.0
    Datsun 710 22.8 disp 108.0
    Hornet 4 Drive 21.4 disp 258.0
    Hornet Sportabout 18.7 disp 360.0
    Valiant 18.1 disp 225.0
    Duster 360 14.3 disp 360.0
    Merc 240D 24.4 disp 146.7
    Merc 230 22.8 disp 140.8
    Merc 280 19.2 disp 167.6
    g3 <- gather(tdata, key = "Key", value = "Value", mpg, cyl, 
        -disp)
    knitr::kable(g3)
    
    name disp Key Value
    Mazda RX4 160.0 mpg 21.0
    Mazda RX4 Wag 160.0 mpg 21.0
    Datsun 710 108.0 mpg 22.8
    Hornet 4 Drive 258.0 mpg 21.4
    Hornet Sportabout 360.0 mpg 18.7
    Valiant 225.0 mpg 18.1
    Duster 360 360.0 mpg 14.3
    Merc 240D 146.7 mpg 24.4
    Merc 230 140.8 mpg 22.8
    Merc 280 167.6 mpg 19.2
    Mazda RX4 160.0 cyl 6.0
    Mazda RX4 Wag 160.0 cyl 6.0
    Datsun 710 108.0 cyl 4.0
    Hornet 4 Drive 258.0 cyl 6.0
    Hornet Sportabout 360.0 cyl 8.0
    Valiant 225.0 cyl 6.0
    Duster 360 360.0 cyl 8.0
    Merc 240D 146.7 cyl 4.0
    Merc 230 140.8 cyl 4.0
    Merc 280 167.6 cyl 6.0
    spread长变宽,“key”和“value”表示要操作的列
    gdata <- gather(tdata, key = "Key", value = "Value", 2:4)
    s1 <- spread(gdata, key = "Key", value = "Value")
    knitr::kable(s1)
    
    name cyl disp mpg
    Datsun 710 4 108.0 22.8
    Duster 360 8 360.0 14.3
    Hornet 4 Drive 6 258.0 21.4
    Hornet Sportabout 8 360.0 18.7
    Mazda RX4 6 160.0 21.0
    Mazda RX4 Wag 6 160.0 21.0
    Merc 230 4 140.8 22.8
    Merc 240D 4 146.7 24.4
    Merc 280 6 167.6 19.2
    Valiant 6 225.0 18.1
    df <- data.frame(x = c(NA, "a.b", "a.d", "b.c"))
    s2 <- separate(df, col = x, into = c("A", "B"))
    knitr::kable(s2)
    
    A B
    NA NA
    a b
    a d
    b c
    df <- data.frame(x = c(NA, "a.b-c", "a-d", "b-c"))
    s3 <- separate(df, x, into = c("A", "B"), sep = "-")
    knitr::kable(s3)
    
    A B
    NA NA
    a.b c
    a d
    b c
    x <- separate(df, x, into = c("A", "B"), sep = "-")
    u <- unite(x, col = "AB", A, B, sep = "-")
    knitr::kable(u)
    
    AB
    NA-NA
    a.b-c
    a-d
    b-c

    相关文章

      网友评论

          本文标题:tidyr包常用函数操作

          本文链接:https://www.haomeiwen.com/subject/taqkqhtx.html