0

我需要找到以下最小值:

  Product Year
   N1     1988
   N2     1986
   N1     2008
   N1     2008
   N2     1999
   N2     2007

我想查找使用 RScript 首次列出的产品年份。例如产品 N1 于 1988 年首次上市。产品 N2 于 1986 年首次上市。同样我必须为 500000 个产品做。

4

2 回答 2

3

有不同的可能性:aggregatetapplyby

dat <- read.table(text = " Product Year
   N1     1988
   N2     1986
   N1     2008
   N1     2008
   N2     1999
   N2     2007", header = TRUE)

aggregate(Year ~ Product, dat, min)
  Product Year
1      N1 1988
2      N2 1986

with(dat, tapply(Year, Product, min))
  N1   N2 
1988 1986 

with(dat, by(Year, Product, min))
Product: N1
[1] 1988
-------------------------------------------------------------------------------- 
  Product: N2
[1] 1986
于 2013-07-21T15:21:39.797 回答
1

这在 R 中非常简单。尝试:

dframe = read.table(text=" Product Year
   N1     1988
   N2     1986
   N1     2008
   N1     2008
   N2     1999
   N2     2007", header=T)

lapply(split(dframe$Year, dframe$Product), FUN=min)
$N1
[1] 1988

$N2
[1] 1986

这里的关键函数是?split?lapplysplit()按产品组分解数据框并返回列表列表。 lapply()将函数min()应用于每个列表,并返回由相关列表(产品)索引的输出。

于 2013-07-21T15:03:32.380 回答