本文介绍了pivot_wider 似乎不适用于缺失值.缺少值时如何将 spread() 转换为 pivot_wider()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当 spread() 函数被新的 pivot_wider() 函数取代时,我试图从现在开始使用 pivot_wider() 但由于缺少值,它似乎不起作用.非常感谢任何帮助
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.
推荐答案
在透视前替换sex中的缺失值:
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"
)
这篇关于pivot_wider 似乎不适用于缺失值.缺少值时如何将 spread() 转换为 pivot_wider()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!