當列C = X的值時,如何找到一列(列B)的最大值。我如何保留列A中的標籤。說我的數據被稱爲my.data,列a =國家名稱,列b =出生的孩子的數量,列C =孩子出生的年份。那麼如何找到2001年出生的兒童的最大數量,保持國家的名字?當另一列中的值爲X時,查找一列的最大值X
謝謝你,我很抱歉,我是新至R
當列C = X的值時,如何找到一列(列B)的最大值。我如何保留列A中的標籤。說我的數據被稱爲my.data,列a =國家名稱,列b =出生的孩子的數量,列C =孩子出生的年份。那麼如何找到2001年出生的兒童的最大數量,保持國家的名字?當另一列中的值爲X時,查找一列的最大值X
謝謝你,我很抱歉,我是新至R
有R中的許多選項(和做題)做這種手術的
我會給出一個解決方案data.table
因爲我喜歡這種查詢
對於大數據集的效率容易語法。我也爲子集提供了一個非常簡單的語法。 (.SD引用由i
和by
創建的子集)
library(data.table)
DT <- data.table(my.data)
DT[year==2001, .SD[which.max(births)]]
或者這是相同的,而無需.SD
DT[year==2001][which.max(births)]
my.data <- expand.grid(
Country = c('Swaziland', 'Australia', 'Tuvalu', 'Turkmenistan'),
year = 1990:2012)
my.data$births <- rpois(nrow(my.data), lambda = 500)
DT <- data.table(my.data)
DT[year==2001, .SD[which.max(births)]]
## Country year births
## 1: Swaziland 2001 501
births_2001 <- subset(my.data, year == 2001)
births_2001[which.max(births_2001$births),]
## Country year births
## 45 Swaziland 2001 501
有很多方法可以做到這一點。我會分解它,所以你可以希望看到更好的事情。
my.data <- data.frame(
country=c("Australia","France","Germany","Honduras","Nepal","Honduras"),
children=c(120000,354000,380000,540000,370000,670000),
year=c(2000,2001,2001,2002,2001,2003)
)
myd01 <- my.data[my.data$year==2001,] # pulls out the 2001 data
myd01[myd01$children==max(myd01$children),] # finds the rows with the maximum
> aggregate(.~ year,data=my.data, FUN= max)
這也將解決這個問題。