3

列C=Xの場合、1つの列(列B)の最大値をどのように見つけますか。列Aからラベルを保持するにはどうすればよいですか。データの名前がmy.data、列a =国名、列であるとします。 b =生まれた子供の数、列C=子供が生まれた年。では、国の名前を並べたまま、2001年に生まれた子供の最大数をどのように見つけるのでしょうか。

ありがとう、ごめんなさい、私はRに不慣れです

4

3 に答える 3

5

これを行うにはいくつかの方法があります。うまくいけば、何が起こっているのかをよりよく理解できるように、それを分割します。

 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 
于 2012-09-18T23:36:28.130 に答える
5

この種の操作を行うためのR(およびSOに関する質問)には多くのオプションがあります

data.tableこの種のクエリの簡単な構文が好きなので、解決策を示します

データ表

大規模なデータ セットの効率化のため。また、サブセット化のための非常に簡単な構文も提供します。i(.SD は、およびによって作成されたサブセットを参照します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

ベースRを使用

births_2001 <- subset(my.data, year == 2001)
births_2001[which.max(births_2001$births),]

##      Country year births
## 45 Swaziland 2001    501
于 2012-09-18T23:29:19.477 に答える
3
> aggregate(.~ year,data=my.data, FUN= max)

これで問題も解決します。

于 2013-07-18T08:46:21.453 に答える