【发布时间】:2015-05-10 13:06:19
【问题描述】:
这当然是一个经常遇到的问题,所以我在这里期待很多关于这个的问题。但是,我能找到的所有答案都非常针对问题,并且经常遇到解决方法(您不必这样做,foobar 在这种情况下要好得多)或非 data.table 解决方案.也许这是因为它应该是 data.table 的明智之举
我有一个 data.table,其中包含 tentgelt 和 te_med 的年度数据。对于每一年,我想知道tentgelt > te_med 的观察份额。这就是我正在做的:
# note that nAbove and nBelow do not add up to 1
nAbove <- wages[tentgelt > te_med, list(nAbove = .N), by=list(year)]
nBelow <- wages[tentgelt < te_med, list(nBelow = .N), by=list(year)]
nBelow[nAbove][, list(year, foo=nAbove/(nAbove+nBelow))]
这可行,但每当我看到其他人的 data.table 代码时,它看起来比我的解决方法更清晰、更容易。有没有更简洁的方法来获得以下类型的输出?
year foo
1: 1993 0.2372093
2: 1994 0.1567568
3: 1995 0.8132530
4: 1996 0.1235955
5: 1997 0.1065574
6: 1998 0.3070684
7: 1999 0.1491974
这是我的数据示例:
year tentgelt te_med
1: 2010 120.95 53.64929
2: 2010 9.99 116.72601
3: 2010 113.52 53.07394
4: 2010 10.27 38.45728
5: 2010 48.58 124.65753
6: 2010 96.38 86.99060
7: 2010 3.46 65.75342
8: 2010 107.52 91.87592
9: 2010 107.52 42.92953
10: 2010 3.46 73.92328
11: 2010 96.38 85.23419
12: 2010 2.25 79.19995
13: 2010 42.32 35.75757
14: 2010 7.94 93.44305
15: 2010 120.95 113.41370
16: 2010 7.94 110.68628
17: 2010 107.52 127.30682
18: 2010 2.25 103.49036
19: 2010 120.95 123.62054
20: 2010 96.38 68.57532
对于此示例,预期输出应为:
year V2
1: 2010 0.45
【问题讨论】:
-
开头段落属于评论,而不是问题......无论如何,这就是我要放的地方。这就是Meta Stack Overflow 上的人们所说的“噪音”
标签: r data.table