如何让我的for循环在R中工作

时间:2017-10-26 18:05:47

标签: r

我的数据框中有几个变量someVal_= someVal_$eq。我没有打印这些因子变量的水平分布,而是使用循环来打印分布。然而似乎没有什么打印。请让我知道如何解决这个问题..

AGE
ACT_TYPE GENDER

如果我用forloop将上述打印替换为显示器,我看不到任何o / p。 请让我知道我哪里出错...

   > str(combin)
         Classes ‘data.table’ and 'data.frame': 500000 obs. of  333 variables:
      $ CUSTOMER_ID               : int  385793 286891 108751 278651 23637 130723 5694 275523 163723 469852 ...
     $ ACT_TYPE                  : Factor w/ 2 levels "CSA","SA": 1 1 1 1 1 1 2 2 2 1 ...
     $ GENDER                    : Factor w/ 3 levels "","F","M": 3 3 3 3 3 3 3 3 3 3 ...
     $ LEGAL_ENTITY              : Factor w/ 7 levels "ASSOCIATION",..: 3 3 3 3 3 3 3 3 3 3

还建议我如何在for循环中应用条件才能打印 只有当它是一个因子变量时才会分配。

1 个答案:

答案 0 :(得分:0)

您可以使用purrr循环遍历数据框的每一列并返回一个列表,其中列表中的每个项目对应一列,而作为因子的列是prop.tables

library(purrr)

#generate some random data like yours
mydf <- data_frame(
      id = sample(1:100, 10,replace = F)
    , ACT_TYPE = factor(sample(c("CSA", "SA"),10, replace = T))
    , GENDER = factor(sample(c("", "F", "M"), 10, replace = T))
 )

# use map_if to generate prop.tables when the column is a factor
map_if(mydf, ~class(.x) == "factor", ~prop.table(table(.x)) )