使用mutate_at对dcast data.frame中的所有条目进行四舍五入只能按预期四舍五入一些观测值

时间:2018-07-08 17:05:11

标签: r pivot-table rounding mutate dcast

我有3835个观测值:

  

tramp [sample(nrow(tramp),40),]

                                       A           B C
2313                   Polyodon spathula  Aci_CR_R02 0
3544         Scaphirhynchus platorynchus  Aci_CR_R04 0
1518           Acipenser gueldenstaedtii  Aci_CR_R05 3
1307        Acipenser stellatus donensis  Aci_CR_R05 0
2586                  Acipenser ruthenus  Aci_CR_R02 0
996                   Acipenser ruthenus  Aci_CR_R06 0
37                      Acipenser baerii  Aci_CR_R01 0
1310        Acipenser stellatus donensis  Aci_CR_R05 0
3205                  Acipenser ruthenus  Aci_CR_R04 0
598                   Acipenser persicus  Aci_CR_R03 0
1883 Acipenser gueldenstaedtii colchicus  Aci_CR_F02 0
2258                  Acipenser sinensis Aci_CR_F01b 0
604                 Acipenser schrenckii  Aci_CR_R03 0
2475                  Acipenser ruthenus  Aci_CR_R02 0
2630                    Acipenser baerii  Aci_CR_R02 0
1433                    Acipenser baerii  Aci_CR_R05 3
1857     Acipenser baerii stenorrhynchus  Aci_CR_F02 1
1913                  Acipenser naccarii  Aci_CR_F02 0
3395           Acipenser gueldenstaedtii  Aci_CR_R04 0
3372                       Huso dauricus  Aci_CR_R04 0
919                     Acipenser baerii  Aci_CR_R06 0
3157        Acipenser baerii baicalensis  Aci_CR_R04 0
848         Acipenser stellatus ponticus  Aci_CR_R06 0
1762                  Acipenser naccarii  Aci_CR_F02 1
323       Pseudoscaphirhynchus kaufmanni  Aci_CR_R01 1
2860             Acipenser transmontanus  Aci_CR_R02 0
1423                    Acipenser baerii  Aci_CR_R05 3
478         Acipenser stellatus ponticus  Aci_CR_R03 0
834         Acipenser stellatus donensis  Aci_CR_R06 0
3199                  Acipenser ruthenus  Aci_CR_R04 0
1141                  Acipenser sinensis  Aci_CR_R06 1
1535           Acipenser gueldenstaedtii  Aci_CR_R05 3
3402           Acipenser gueldenstaedtii  Aci_CR_R04 0
344          Scaphirhynchus platorynchus  Aci_CR_R01 2
2422        Acipenser stellatus ponticus  Aci_CR_R02 0
648            Acipenser gueldenstaedtii  Aci_CR_R03 0
1466                  Acipenser naccarii  Aci_CR_R05 3
2279              Acipenser brevirostrum Aci_CR_F01b 0
2450     Acipenser baerii stenorrhynchus  Aci_CR_R02 0
2067                  Acipenser ruthenus  Aci_CR_F02 3

glimpse(tramp)
Observations: 3,835
Variables: 3
$ A <fct> Acipenser fulvescens, Acipenser fulvescens, Acipenser brevirostrum, Acipenser brevi...
$ B <fct> Aci_CR_R01, Aci_CR_R01, Aci_CR_R01, Aci_CR_R01, Aci_CR_R01, Aci_CR_R01, Aci_CR_R01,...
$ C <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
> 

我将dcast与mutate_at结合使用:

ramp<-dcast(data = tramp, B~A, value.var = "C",mean)
newdata <- ramp %>% mutate_at(vars(2:40), funs(round(.,2)))

这个方法似乎是真实的,但是我得到一些奇数列,如下所示,其中小数位数不是指定的2 The first 8 columns in the data.frame

这是怎么了?在清理数据之前,我还得到了很多“ Na”,而不仅仅是NaN

根据要求:

dput(tramp[sample(nrow(tramp), 80), ])
    structure(list(A = structure(c(31L, 23L, 27L, 1L, 32L, 23L, 31L, 
10L, 25L, 5L, 38L, 1L, 33L, 44L, 5L, 48L, 6L, 4L, 23L, 31L, 44L, 
25L, 41L, 9L, 1L, 25L, 23L, 38L, 41L, 16L, 23L, 44L, 9L, 27L, 
23L, 5L, 31L, 31L, 40L, 1L, 10L, 31L, 1L, 45L, 35L, 49L, 35L, 
10L, 48L, 49L, 38L, 1L, 1L, 5L, 10L, 48L, 19L, 32L, 43L, 44L, 
35L, 45L, 39L, 45L, 1L, 17L, 27L, 23L, 48L, 10L, 17L, 35L, 1L, 
1L, 5L, 9L, 19L, 32L, 10L, 31L), .Label = c("Acipenser baerii", 
"Acipenser baerii baerii", "Acipenser baerii baicalensis", "Acipenser baerii stenorrhynchus", 
"Acipenser brevirostrum", "Acipenser dabryanus", "Acipenser dabryanus x Acipenser schrenckii", 
"Acipenser dabryanus x Acipenser sinensis", "Acipenser fulvescens", 
"Acipenser gueldenstaedtii", "Acipenser gueldenstaedtii colchicus", 
"Acipenser gueldenstaedtii gueldenstaedtii", "Acipenser gueldenstaedtii x Acipenser baerii", 
"Acipenser medirostris", "Acipenser mikadoi", "Acipenser naccarii", 
"Acipenser nudiventris", "Acipenser oxyrinchus", "Acipenser oxyrinchus desotoi", 
"Acipenser oxyrinchus oxyrinchus", "Acipenser persicus", "Acipenser persicus persicus", 
"Acipenser ruthenus", "Acipenser ruthenus x Huso huso", "Acipenser schrenckii", 
"Acipenser schrenckii x Huso dauricus", "Acipenser sinensis", 
"Acipenser sp. JNY", "Acipenser sp. PD", "Acipenser stellatus", 
"Acipenser stellatus donensis", "Acipenser stellatus ponticus", 
"Acipenser stellatus stellatus", "Acipenser sturio", "Acipenser transmontanus", 
"Huso dauricus", "Huso dauricus x Acipenser schrenckii", "Huso huso", 
"Huso huso caspicus", "Huso huso maeoticus", "Polyodon spathula", 
"Psephurus gladius", "Pseudoscaphirhynchus hermanni", "Pseudoscaphirhynchus kaufmanni", 
"Scaphirhynchus albus", "Scaphirhynchus albus x Scaphirhynchus platorynchus", 
"Scaphirhynchus cf. albus", "Scaphirhynchus platorynchus", "Scaphirhynchus suttkusi"
), class = "factor"), B = structure(c(5L, 4L, 5L, 10L, 9L, 4L, 
8L, 9L, 7L, 3L, 7L, 8L, 8L, 7L, 6L, 6L, 3L, 4L, 4L, 9L, 7L, 1L, 
1L, 10L, 5L, 7L, 4L, 8L, 10L, 10L, 4L, 5L, 1L, 10L, 4L, 3L, 7L, 
6L, 6L, 5L, 4L, 8L, 5L, 2L, 8L, 9L, 6L, 4L, 10L, 2L, 6L, 5L, 
6L, 6L, 1L, 5L, 4L, 5L, 5L, 5L, 6L, 10L, 8L, 4L, 4L, 1L, 8L, 
10L, 10L, 6L, 7L, 6L, 8L, 4L, 6L, 8L, 5L, 10L, 6L, 6L), .Label = c("Aci_CR_F01a", 
"Aci_CR_F01b", "Aci_CR_F01c", "Aci_CR_F02", "Aci_CR_R01", "Aci_CR_R02", 
"Aci_CR_R03", "Aci_CR_R04", "Aci_CR_R05", "Aci_CR_R06", "degenerate anti sense primer primer bind", 
"primer bind", "sense primer primer bind"), class = "factor"), 
    C = c(0, 3, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 
    1, 3, 0, 0, 0, 0, 0, 0, 0, 3, 1, 3, 0, 4, 1, 0, 1, 3, 0, 
    0, 0, 2, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 4, 0, 0, 0, 0, 
    2, 2, 0, 1, 1, 0, 0, 3, 2, 1, 0, 4, 2, 0, 0, 0, 0, 0, 1, 
    0, 0, 1, 0, 0, 0)), row.names = c(256L, 2096L, 69L, 1006L, 
1288L, 2017L, 3118L, 1535L, 610L, 1274L, 676L, 3335L, 3154L, 
763L, 2526L, 2517L, 1241L, 1846L, 2018L, 1325L, 402L, 3827L, 
3791L, 811L, 30L, 604L, 2053L, 3621L, 1152L, 967L, 2075L, 322L, 
3741L, 1141L, 2058L, 1196L, 446L, 2399L, 2902L, 54L, 1697L, 3096L, 
40L, 2222L, 3518L, 1372L, 2807L, 2112L, 880L, 2291L, 2940L, 26L, 
2644L, 2777L, 3753L, 368L, 2117L, 295L, 330L, 323L, 2864L, 888L, 
3663L, 1664L, 1951L, 3739L, 3678L, 1149L, 892L, 2333L, 578L, 
2850L, 3362L, 1953L, 2786L, 3481L, 319L, 868L, 2706L, 2388L), class = "data.frame")

0 个答案:

没有答案