首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据一系列子集在dataframe上创建一个表函数,然后可视化结果表的特定值?

如何根据一系列子集在dataframe上创建一个表函数,然后可视化结果表的特定值?
EN

Stack Overflow用户
提问于 2022-10-20 16:06:14
回答 1查看 28关注 0票数 0

我有很多数据集: df作为主要数据框架(但让我们想象它们都是非常大的数据集)

代码语言:javascript
运行
复制
df = data.frame(x = seq(1,20,2),
y = c('a','a','b','c','a','a','b','c','a','a'),
z = c('d','e','e','d','f','e','e','d','e','f') )

g = data.frame(xx = c(2,3,4,5,7,8,9) )

h = data.frame(xx = c(3,5,7,8,9) )

i = data.frame(xx = c(2,3,6,8) )

j = data.frame(xx = c(1,3,6) )

我希望每次使用对方数据的xx (xx用于子集df)将一组频率表生成到df的y列。

然后每次使用彼此数据的xx将一组频率表生成到df的Z列(xx用于子集df)。

下一步:

我想形象化一个变量的每个值的频率,以研究它的发展:

例如,对于变量y:从g到j的值a的发展是: 2,2,1,2,我想用一种简单的方式对变量y的每个值进行可视化。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-20 16:08:24

我们可以将数据集放在一个list中(dplyr::lst-返回一个命名列表),在list上循环使用map,基于'x‘列的主数据集子集,或者做一个inner_join并得到频率count

代码语言:javascript
运行
复制
library(dplyr)
library(purrr)
map(lst(g, h, i,j), 
   ~ inner_join(df, .x, by = c("x" = "xx")) %>%      
       count(y, name = 'Count'))

-output

代码语言:javascript
运行
复制
$g
  y Count
1 a     2
2 b     1
3 c     1

$h
  y Count
1 a     2
2 b     1
3 c     1

$i
  y Count
1 a     1

$j
  y Count
1 a     2

或在base R

代码语言:javascript
运行
复制
lapply(list(g = g, h = h, i = i, j = j),
  \(dat) subset(df, x %in% dat$xx, select = y ) |>
      table())

如果我们需要可视化,要么转换成单个数据集,然后使用geom_col/geom_bar执行barplot,要么在基R中使用barplot

代码语言:javascript
运行
复制
library(ggplot2)
map_dfr(lst(g, h, i,j), 
   ~ inner_join(df, .x, by = c("x" = "xx")) %>%      
       count(y, name = 'Count'), .id = 'grp') %>% 
  ggplot(aes(x = grp, y = Count, fill = y)) +
    geom_col(position = "dodge")
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74143013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档