如何在R中的非平衡面板数据中修剪超过99%的数据?

时间:2016-11-28 16:39:05

标签: r panel data-cleaning

我有一个不平衡的面板数据。简化示例如下:

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

我想做的是在每个变量的所有frims中修剪每年的异常值。修剪的方法是将NA分配给那些值&gt; 99%和&lt; 1%的数据。例如,对于2000年,对于Var_1,将NA分配给所有&gt;的值。 99%或< 1%。理想情况下,修剪后的数据将如下所示:

Firm Year  V1  V2 V3
AAA  2001  0   8   2    
AAA  2002  10  4   2    
BBB  1999  0   8   8    
BBB  2000  7   0   6    
BBB  2001  10  100 1    
BBB  2002  1   5   8    
CCC  2001  2   8   0    
CCC  2002 -98  3  10    

真实数据庞大,数据结构不平衡。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法一次为每个变量标记异常值。

data.frame(lapply(df[3:5],                                         # variable indices 3:5
           function(y) ave(y, df$Year, FUN=function(x) 
                             ifelse(x < quantile(x, .01) | x > quantile(x, .99), NA, x)))) 

#   V1 V2 V3
# 1 NA  8 NA
# 2 NA  4 NA
# 3  0  8  8
# 4  7  0  6
# 5 NA NA  1
# 6  1 NA  8
# 7  2  8 NA
# 8 NA NA NA