如何解决获取数据框中的唯一因子值
使用starwars数据集进行可重复性(寻找tidyverse解决方案)
我可以使用来获取唯一值的数量
library(tidyverse)
starwars %>%
mutate(across(where(is.character),as.factor)) %>%
summarise(across(where(is.factor),n_distinct))
我想要的是这些数字表示的实际数据,我知道它不会是矩形数据,因为性别具有3个不同的值,性别具有5个(依此类推),但是我可以将多余的空格不适用或空白。
正在寻找最终的输出是一个数据帧。
解决方法
要返回具有唯一值长度的数据框,请使用map_df
purrr::map_df(.x = starwars,.f = ~ length(unique(.x)))
要返回具有实际唯一值(用NA填充)的数据框,可以使用:
map(.x = starwars,.f = unique) %>%
map(`length<-`,max(lengths(.))) %>%
as_tibble
,
一种方法是首先计算数据集中唯一值的最大数量
library(dplyr)
max_len <- starwars %>% summarise(across(where(is.character),n_distinct)) %>% max
一旦有了,我们就可以用它来索引任何一列
starwars %>% summarise(across(where(is.character),~unique(.)[seq_len(max_len)]))
# A tibble: 87 x 8
# name hair_color skin_color eye_color sex gender homeworld species
# <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
# 1 Luke Sky… blond fair blue male mascu… Tatooine Human
# 2 C-3PO NA gold yellow none femin… Naboo Droid
# 3 R2-D2 none white,blue red female NA Alderaan Wookiee
# 4 Darth Va… brown white brown hermaph… NA Stewjon Rodian
# 5 Leia Org… brown,grey light blue-gray NA NA Eriadu Hutt
# 6 Owen Lars black white,red black NA NA Kashyyyk Yoda's s…
# 7 Beru Whi… auburn,wh… unknown orange NA NA Corellia Trandosh…
# 8 R5-D4 auburn,gr… green hazel NA NA Rodia Mon Cala…
# 9 Biggs Da… white green-tan,… pink NA NA Nal Hutta Ewok
#10 Obi-Wan … grey pale unknown NA NA Bestine … Sullustan
# … with 77 more rows
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。