我有一個數據集列與不同的醫學專業,但專業重複和每一行都有一個計數。我想總結每個專業的值,並忽略小於10的行。我如何在R中執行此操作?每個專業尋找值
對於防爆:
Col1 Col2
Internal Med 11
Internal Med 12
Neurology 5
Neurology 13
Internal Med 9
我應該得到Internal Med- 12 + 11
(9忽略) Neurology- 13
(5忽略)
我有一個數據集列與不同的醫學專業,但專業重複和每一行都有一個計數。我想總結每個專業的值,並忽略小於10的行。我如何在R中執行此操作?每個專業尋找值
對於防爆:
Col1 Col2
Internal Med 11
Internal Med 12
Neurology 5
Neurology 13
Internal Med 9
我應該得到Internal Med- 12 + 11
(9忽略) Neurology- 13
(5忽略)
# 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
purly base
基礎的解決方案:
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
)
隨着base R
:
aggregate(Col2~Col1, subset(df, Col2 >= 10), sum)
# Col1 Col2
#1 Internal Med 23
#2 Neurology 13
或
subdf <- subset(df, Col2 >= 10)
as.data.frame(Col2=tapply(subdf$Col2, subdf$Col1, sum))
# Col2
# Internal Med 23
# Neurology 13
最簡單的將使用xtabs:
xtabs(Col2 ~ Col1, df, subset = Col2>10)
什麼是%>%?我很困惑,我應該使用第一種方法還是第二種方法? – kobe2792
@RikinMathur它的一個操作符...方法中的任何一個 –
謝謝,但它說錯誤:找不到函數「%>%」 – kobe2792