2013-05-12 35 views
0

我需要找到最小的以下内容:RSCRIPT和统计发现分钟

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

我想找到这一年的产品首先使用RSCRIPT上市。例如,产品N1于1988年首次上市。产品N2于1986年首次上市。同样,我必须为500,000件产品做上述工作。

+1

那你试试?你搜索什么? – GSee 2013-07-21 15:27:05

回答

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()应用于这些列表中的每一个,并返回由有问题的列表(产品)索引的输出。

3

存在不同的可能性:aggregate,tapplyby

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 
+0

+1,用于选项菜单。 – gung 2013-07-21 15:28:49

+0

'library(plyr); ddply(DD, “产品”,总结,minYear = MIN(年))' – 2013-07-21 15:46:26

+0

只是好奇:你看到一个理由,更喜欢其中的一个? (或者,我可以问作为一个新的问题,如果这是更好的。) – gung 2013-07-21 15:56:03