2014-03-26 30 views
2

可能我忽略了一些非常简单的东西,但我似乎无法找到它。我将一个新列分配给一个数据框,该数据框保存另外两列的相乘值。新列中的结果全部是1,但显然不应该是这样。另一方面,划分列似乎不成问题。乘以两个数字向量全部返回1秒

重复的例子:

testset<- 
    read.table(text='"afd" "yr" "val1" "val2" "val3" "val4" 
"1" "1" 2012 875.309027777778 514 0.587221179821412 1.70293585170774 
"2" "1" 2013 929.445833333333 531 0.571308171984202 1.75036880100439 
"3" "2" 2012 5983.97777777778 816 0.136364142766424 7.33330610021786 
"4" "2" 2013 5515.6125 622 0.11277079381483 8.86754421221865 
"5" "3" 2012 1289.25416666667 324 0.251308088332725 3.97917952674897 
"6" "3" 2013 1032.18472222222 281 0.272238092611007 3.67325523922499 
"7" "4" 2012 292.047916666667 105 0.359530042872531 2.78140873015873 
"8" "4" 2013 276.289583333333 97 0.35108091600751 2.84834621993127 
"9" "5" 2012 4605.56180555556 794 0.172400248552136 5.80045567450322 
"10" "5" 2013 5728.63680555555 855 0.149250167015446 6.70016000649773 
"11" "6" 2012 863.24375 352 0.407764319174046 2.45239701704545 
"12" "6" 2013 819.725 342 0.417213089755711 2.3968567251462 
"13" "7" 2012 8875.80902777778 519 0.0584735429047352 17.1017514986084 
"14" "7" 2013 9065.16805555556 541 0.0596789818660284 16.7563180324502 
"15" "8" 2012 811.765277777778 121 0.149057866001906 6.70880394857668 
"16" "8" 2013 741.938194444444 115 0.154999433727914 6.45163647342995 
"17" "9" 2012 628.202777777778 261 0.415470942238219 2.40690719455087 
"18" "9" 2013 609.850694444444 261 0.427973604650501 2.33659269902086 
"19" "10" 2012 27.2923611111111 6 0.219841734307015 4.54872685185185 
"20" "10" 2013 39.0069444444444 5 0.128182303720847 7.80138888888889 
"21" "11" 2012 15305.5229166667 2324 0.151840614179168 6.58585323436604 
"22" "11" 2013 14206.5472222222 2317 0.163093816094575 6.1314403203376 
"23" "12" 2012 1545.67986111111 202 0.130686829195531 7.65188050055005 
"24" "12" 2013 1408.35 214 0.151950864486811 6.58107476635514 
"25" "13" 2012 1067.82847222222 333 0.311847837609167 3.20669210877544 
"26" "13" 2013 1151.11875 327 0.284071473946541 3.52024082568807') 

testset$val5<- 
    testset$val3 * testset$val4 

testset$val6<- 
    testset$val3/testset$val4 

和输出:

afd yr  val1 val2  val3  val4 val5  val6 
1 1 2012 875.30903 514 0.58722118 1.702936 1 0.344828714 
2 1 2013 929.44583 531 0.57130817 1.750369 1 0.326393027 
3 2 2012 5983.97778 816 0.13636414 7.333306 1 0.018595179 
4 2 2013 5515.61250 622 0.11277079 8.867544 1 0.012717252 
5 3 2012 1289.25417 324 0.25130809 3.979180 1 0.063155755 
6 3 2013 1032.18472 281 0.27223809 3.673255 1 0.074113579 
7 4 2012 292.04792 105 0.35953004 2.781409 1 0.129261852 
8 4 2013 276.28958 97 0.35108092 2.848346 1 0.123257810 
9 5 2012 4605.56181 794 0.17240025 5.800456 1 0.029721846 
10 5 2013 5728.63681 855 0.14925017 6.700160 1 0.022275612 
11 6 2012 863.24375 352 0.40776432 2.452397 1 0.166271740 
12 6 2013 819.72500 342 0.41721309 2.396857 1 0.174066762 
13 7 2012 8875.80903 519 0.05847354 17.101751 1 0.003419155 
14 7 2013 9065.16806 541 0.05967898 16.756318 1 0.003561581 
15 8 2012 811.76528 121 0.14905787 6.708804 1 0.022218247 
16 8 2013 741.93819 115 0.15499943 6.451636 1 0.024024824 
17 9 2012 628.20278 261 0.41547094 2.406907 1 0.172616104 
18 9 2013 609.85069 261 0.42797360 2.336593 1 0.183161406 
19 10 2012 27.29236 6 0.21984173 4.548727 1 0.048330388 
20 10 2013 39.00694 5 0.12818230 7.801389 1 0.016430703 
21 11 2012 15305.52292 2324 0.15184061 6.585853 1 0.023055572 
22 11 2013 14206.54722 2317 0.16309382 6.131440 1 0.026599593 
23 12 2012 1545.67986 202 0.13068683 7.651881 1 0.017079047 
24 12 2013 1408.35000 214 0.15195086 6.581075 1 0.023089065 
25 13 2012 1067.82847 333 0.31184784 3.206692 1 0.097249074 
26 13 2013 1151.11875 327 0.28407147 3.520241 1 0.080696602 
+2

“但显然不应该” - 为什么? –

回答

4

它看起来像你的val3val4恰好机器精度内繁殖至1:

summary(testset$val3 * testset$val4) 

我建议你重新考虑数据来自哪里。

+0

谢谢,现在感觉非常愚蠢...... – Bart