从子集中保留所有观察结果

时间:2017-04-25 08:33:29

标签: r

我正在尝试从大数据框创建两个不同的子集。这是代码:

:: prime table using rotating multiples stored in environment
@echo off
setlocal enabledelayedexpansion 
mode con cols=90
set @25=-10
set /a num=7,inc1=4,cnt=0,inc2=0,num1=0, maxprime=10000
set lin=    0:
call:line 2 & call:line 3 & call:line 5

:nextnum


if defined @%num% ( 
       for %%i in (!@%num%!) do (
     if %%i lss 0  (set /a num1=%num%-%%i,"inc2=-%%i<<1") else (set /a num1=%num%+%%i,"inc2=-(%%i>>1)")
     call :aux !num1! !inc2!
       )
     set @%num%=
) else (
   call :line %num%
   set /a num1= num * num 
   if %inc1% equ 4 (set/a "inc2=num<<2") else (set /a "inc2=-(num<<1)")
   if !num1! leq %maxprime%   set @!num1!=!inc2! 
)
set /a num+=inc1, inc1=6-inc1
if %num% lss %maxprime% goto nextnum
echo %lin%
pause  & goto:eof

:aux 
 if %1 leq %maxprime%  set @%1=%2 !@%1!
goto:eof   

:line        formats output in 10 right aligned columns
set num2=       %1
set lin=%lin%%num2:~-8%
set /a cnt+=1,res1=(cnt%%10)
if %res1% neq 0 goto:eof
echo %lin% 
set cnt1=    %cnt%
set lin=%cnt1:~-5%:
goto:eof 

目的是选择2010年得分高于2009年的观察结果。 问题是在新表(改进)中,缺少2009年和2010年的行,但我想保留它们。

它应该是这样的:

amelioration <- subset(resilience, 
         (subset(resilience, resilience$YEAR==2010)$SCORE>
         subset(resilience, resilience$YEAR==2009)$SCORE))

但它看起来像这样:

ID  |  YEAR  | SCORE
--------------------
177 | 2008   | 14
--------------------
177 | 2009   | 11
--------------------
177 | 2010   | 17
--------------------
177 | 2011   | 16

我尝试使用哪个命令,但它也不起作用。我该怎么办?

1 个答案:

答案 0 :(得分:0)

使用data.table,您可以将年份变量重新设定为得分,并直接过滤年份。

ambivalence = data.table(ambivalence)
castedDF = dcast(ambivalence, id ~ year, fun.aggregate = sum)
targetRows = castedDF[`2010` > `2009`]