首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >根据其他列定义的子集按组计算多列的中位数

根据其他列定义的子集按组计算多列的中位数
EN

Stack Overflow用户
提问于 2018-08-29 00:14:36
回答 2查看 862关注 0票数 2

我正在尝试根据其他列定义的子集,按组计算多列的中位数(但这可以被类似的度量所替代)。这是我的previous post直接跟进的问题。我试图将通过aggregate计算中位数的方法合并到@Frank友好地提供的Map(function(x,y) dosomething, x, y)解决方案中,但这没有效果。让我举例说明:

用群GRP1和GRP2计算A和B的中位数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df <- data.frame(GRP1 = c("A","A","A","A","A","A","B","B","B","B","B","B"), GRP2 = c("A","A","A","B","B","B","A","A","A","B","B","B"), A = c(0,4,6,7,0,1,9,0,0,8,3,4), B = c(6,0,4,8,6,7,0,9,9,7,3,0))

med <- aggregate(.~GRP1+GRP2,df,FUN=median)

很简单。现在添加定义用于计算中位数的行的列,即应该删除具有NAs的行,列A定义哪些行用于计算A列中的中位数,b和B列的情况相同:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a <- c(1,4,7,3,NA,3,7,NA,NA,4,8,1)
b <- c(5,NA,7,9,5,6,NA,8,1,7,2,9)
df1 <- cbind(df,a,b)

正如上面提到的,我尝试过将Mapaggregate结合起来,但这是行不通的。我假设Map不知道如何处理GRP1和GRP2。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
med1 <- Map(function(x,y) aggregate(.~GRP1+GRP2,df1[!is.na(y)],FUN=median), x=df1[,3:4], y=df1[, 5:6])

这就是我要找的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  GRP1 GRP2 A B
1    A    A 4 5
2    B    A 9 9
3    A    B 4 7
4    B    B 4 3

任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-29 00:24:58

使用data.table

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(data.table)
setDT(df1)

df1[, .(A = median(A[!is.na(a)]), B = median(B[!is.na(b)])), by = .(GRP1, GRP2)]

   GRP1 GRP2 A B
1:    A    A 4 5
2:    A    B 4 7
3:    B    A 9 9
4:    B    B 4 3

dplyr中的相同逻辑

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(dplyr)
df1 %>%
  group_by(GRP1, GRP2) %>%
  summarise(A = median(A[!is.na(a)]), B = median(B[!is.na(b)]))

原始df1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df1 <- data.frame(
  GRP1 = c("A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "B"),
  GRP2 = c("A", "A", "A", "B", "B", "B", "A", "A", "A", "B", "B", "B"),
  A = c(0, 4, 6, 7, 0, 1, 9, 0, 0, 8, 3, 4),
  B = c(6, 0, 4, 8, 6, 7, 0, 9, 9, 7, 3, 0),
  a = c(1, 4, 7, 3, NA, 3, 7, NA, NA, 4, 8, 1),
  b = c(5, NA, 7, 9, 5, 6, NA, 8, 1, 7, 2, 9)
)
票数 2
EN

Stack Overflow用户

发布于 2018-08-29 00:36:52

dplyr

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(dplyr)
df1 %>% 
  mutate(A = ifelse(is.na(a), NA, A),
         B = ifelse(is.na(b), NA, B)) %>% 
# I use this to put as NA the values we don't want to include
  group_by(GRP1, GRP2) %>% 
  summarise(A = median(A, na.rm = T),
            B = median(B, na.rm = T))

# A tibble: 4 x 4
# Groups:   GRP1 [?]
  GRP1  GRP2      A     B
  <fct> <fct> <dbl> <dbl>
1 A     A         4     5
2 A     B         4     7
3 B     A         9     9
4 B     B         4     3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52072656

复制
相关文章
CSS——多列
多列属性可以将文本设计成像报纸杂志那种多列排版的布局,类似于Microsoft Word中的段落分栏功能。
Html5知典
2019/11/26
1.2K0
怎样能自动按列01 列02 最大为列99,来设置列标题?
前几天在Python最强王者交流群有个粉丝咨询了这个问题:获取到数据表的列数比较简单,一般不超过99列,怎样能自动按列01 列02 最大为列99,来设置列标题?一劳永逸,以后这类场景都这样套用。
前端皮皮
2022/12/19
1.1K0
怎样能自动按列01 列02  最大为列99,来设置列标题?
shell按列合并文件
cat命令可以按行依次合并两个文件。但有时候我们需要按列合并多个文件,也就是将每一个文件的内容作为单独的的几列,这个时候可以用paste来按列合并多个文件。 用法: paste file1 file2 ...
生信编程日常
2020/06/28
2.9K0
SQL 将多列的数据转到一列
如题。假设我们要把 emp 表中的 ename、job 和 sal 字段的值整合到一列中,每个员工的数据(按照 ename -> job -> sal 的顺序展示)是紧挨在一块,员工之间使用空行隔开。
白日梦想家
2020/09/08
5.5K0
mybatis无效列类型_未明确定义的列
select * from (这里能正确执行) tmp_tb where ROWNUM<=10) where row_id>=1
全栈程序员站长
2022/11/09
1.3K0
pandas按行按列遍历Dataframe的几种方式
iterrows(): 按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[name]对元素进行访问。 itertuples(): 按行遍历,将DataFrame的每一行迭代为元祖,可以通过row[name]对元素进行访问,比iterrows()效率高。 iteritems():按列遍历,将DataFrame的每一列迭代为(列名, Series)对,可以通过row[index]对元素进行访问。 示例数据
kirin
2021/04/30
7.2K0
PBI-基础入门:添加列与新建列(计算列)
大海:在Power BI里增加列有2种方法,一种是咱们在学Power Query里的“添加列”方法,还有一种是在PowerPivot里的新建“计算列”方法。具体操作方法如下:
大海Power
2021/08/30
7.6K0
Excel按列排序和按行排序
文章背景:Excel二维表中记录着多行多列的数据,有时需要按行或按列排序,使数据更加清晰、易读。下面分别对按列排序和按行排序进行介绍。
Exploring
2022/08/10
3.2K0
Excel按列排序和按行排序
jqm的多列布局demo,html5的多列布局demo,多列布局的详细讲解,html5开发实例详解
由于移动设备屏幕宽度较小,所以一般不建议使用多列布局。但有时你可能需要并排放置一些元素(如按钮之类的)。 
业余草
2019/01/21
1.7K0
BI技巧丨按列排序
PowerBI本身内置的排序方式,是遵循ASCII国际标准的方式,这就导致了中文的默认排序对于很多小伙伴来说并不友好。
PowerBI丨白茶
2022/11/12
3.5K0
BI技巧丨按列排序
Ext根据条件显示隐藏列
  写在ExtonReady函数里面,并在表格成功渲染之后,可以添加判断是否隐藏或者显示某一列
河岸飞流
2019/08/09
2.7K0
根据数据源字段动态设置报表中的列数量以及列宽度
在报表系统中,我们通常会有这样的需求,就是由用户来决定报表中需要显示的数据,比如数据源中共有八列数据,用户可以自己选择在报表中显示哪些列,并且能够自动调整列的宽度,已铺满整个页面。本文就讲解一下Act
葡萄城控件
2018/01/10
4.9K0
根据数据源字段动态设置报表中的列数量以及列宽度
SQL删除多列语句的写法
最近在写SQL过程中发现需要对一张表结构作调整(此处是SQL Server),其中需要删除多列,由于之前都是一条SQL语句删除一列,于是猜想是否可以一条语句同时删除多列,如果可以,怎么写法?
PHP开发工程师
2021/06/02
3.6K0
Python-科学计算-pandas-14-df按行按列进行转换
系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2 pandas:0.19.2
zishendianxia
2020/10/10
2K0
Python-科学计算-pandas-14-df按行按列进行转换
Python-科学计算-pandas-22-按某列排序
系统:Windows 10 编辑器:JetBrains PyCharm Community Edition 2018.2.2 x64 pandas:1.1.5
zishendianxia
2021/09/29
1.5K0
聊聊mysql的多列组合查询
• mysql-filtering-by-multiple-columns[1] • selecting-where-two-columns-are-in-a-set[2]
code4it
2022/04/15
4.7K0
CSS 的多列布局是什么?
就是用 CSS 的 column-count、column-width、column-gap、break-inside、page-break-inside 等实现多列显示的功能。
Learn-anything.cn
2021/12/10
1.4K0
根据某列相同元素求和
下面是一个需要计算相同基因的exon的长度的文件,即根据相同的基因,先计算基因的起点到终点的距离,再对相同的基因的的exon距离求和
生信编程日常
2020/06/11
9980
根据某列相同元素求和
2.布局解决方案 两列、三列、多列、不定宽+一列自适应<6>
和上面的解决方案是一样的,自己动脑筋哦 下面的overflow的方式 display:table和flex大家自己练习。
河湾欢儿
2018/09/06
1.7K0
聊聊mysql的多列组合查询
序 本文主要展示如何使用mysql的多列组合查询 何为多列组合查询呢,就是查询的值不再是单个列的值,而是组合列的值。比如where (column1,column2) in ((a1,b1),(a2,b2),(a3,b3)) 实例 建表 create table t_demo( id int NOT NULL AUTO_INCREMENT PRIMARY KEY, name varchar(10), score int ); insert into t_demo(name,score)
code4it
2022/04/02
4K0

相似问题

根据其他列定义的子集计算多列的度量

11

如何按因子计算多列的中位数?

22

Pandas :按其他列分组的列的中位数

11

SQL根据其他列的值按多列选择顺序

15

根据其他列中组的值,子集/提取列中组的最高值

19
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文