我的数据框中有几个变量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循环中应用条件才能打印 只有当它是一个因子变量时才会分配。
答案 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)) )