pivot_wider does not seem to work with missing values. How to turn spread() into pivot_wider() when there is missing values

旧时模样 提交于 2021-02-11 15:28:06

问题


as the spread() function is being replaced by the new pivot_wider() function, I was trying to use the pivot_wider() from now on but it does not seem to work because of the missing values. Any help is much appreciated

# This is an example I saw on the web

surveys <- read.csv("http://kbroman.org/datacarp/portal_data_joined.csv",
                    stringsAsFactors = FALSE)
library(dplyr)

surveys %>%
  filter(taxa == "Rodent",
         !is.na(weight)) %>%
  group_by(sex,genus) %>%
  summarize(mean_weight = mean(weight)) %>% 
  spread(sex, mean_weight)```

#It gives me the following output. This is what I would like to get
# A tibble: 10 x 4
   genus              V1      F      M
   <chr>           <dbl>  <dbl>  <dbl>
 1 Baiomys          NA     9.16   7.36
 2 Chaetodipus      19.8  23.8   24.7 
 3 Dipodomys        81.4  55.2   56.2 
 4 Neotoma         168.  154.   166.  
 5 Onychomys        23.4  26.8   26.2 
 6 Perognathus       6     8.57   8.20
 7 Peromyscus       19.9  22.5   20.6 
 8 Reithrodontomys  11.1  11.2   10.2 
 9 Sigmodon         70.3  71.7   61.3 
10 Spermophilus     NA    57    130  
surveys %>%
  filter(taxa == "Rodent",
         !is.na(weight)) %>%
  group_by(sex,genus) %>%
  summarize(mean_weight = mean(weight)) %>%
  pivot_wider(
    names_from = sex,
    values_from = mean_weight,
    names_repair = "minimal"
    )

It says the following
Error: Column 1 must be named.
Use .name_repair to specify repair.
Run `rlang::last_error()` to see where the error occurred.

回答1:


Replace the missing values in sex before pivoting:

surveys %>%
  filter(taxa == "Rodent",
         !is.na(weight)) %>%
  group_by(sex,genus) %>%
  summarize(mean_weight = mean(weight)) %>%
  ungroup() %>% 
  mutate(sex = if_else(sex == "", "unknown", sex)) %>% 
  pivot_wider(
    names_from = sex,
    values_from = mean_weight,
    names_repair = "minimal"
  )


来源:https://stackoverflow.com/questions/59327101/pivot-wider-does-not-seem-to-work-with-missing-values-how-to-turn-spread-into

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!