首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按每个专业查找价值

按每个专业查找价值
EN

Stack Overflow用户
提问于 2017-02-04 03:51:18
回答 4查看 55关注 0票数 1

我有一个包含不同医学专科的数据集列,但是专科重复,并且每一行都有一个计数。我想要对每个专业的值求和,并忽略小于10的行。我如何在R中做到这一点?

对于Ex:

代码语言:javascript
复制
        Col1   Col2 
Internal Med     11
Internal Med     12
   Neurology      5
   Neurology     13
Internal Med      9

我应该得到Internal Med- 12 + 11 (9被忽略) Neurology- 13 (5被忽略)

EN

回答 4

Stack Overflow用户

发布于 2017-02-04 03:55:28

代码语言:javascript
复制
# method 1:
library(data.table)
setDT(df)[Col2 > 10, sum(Col2),by = .(Col1)]

# OR
# method 2
library(dplyr)
df %>% group_by(Col1) %>% 
       filter(Col2 > 10) %>% 
       summarise(sum(Col2))

#           Col1 `sum(Col2)`
# 1 Internal_Med          23
# 2    Neurology          13
票数 1
EN

Stack Overflow用户

发布于 2017-02-04 04:29:45

基于purly base的解决方案:

代码语言:javascript
复制
data <- data.frame(
Col1=c("IM", "IM", "N", "N", "IM"),
Col2=c(11, 12, 5, 13, 9)
)

# sums in groups
aggregate(data$Col2, by=list(data$Col1), FUN=sum)

# sums in groups for obs with Col2 >=10
aggregate(data$Col2[data$Col2>=10], by=list(data$Col1[data$Col2>=10]), FUN=sum)

(但我更喜欢dplyr)

票数 0
EN

Stack Overflow用户

发布于 2017-02-04 04:34:25

使用base R

代码语言:javascript
复制
aggregate(Col2~Col1, subset(df, Col2 >= 10), sum)
#            Col1 Col2
#1   Internal Med   23
#2      Neurology   13

代码语言:javascript
复制
subdf <- subset(df, Col2 >= 10)
as.data.frame(Col2=tapply(subdf$Col2, subdf$Col1, sum))
#               Col2
# Internal Med   23
# Neurology      13
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42031996

复制
相关文章

相似问题

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