我有一个具有以下结构的数据集
ID ISCO EMPLOYMENT
1 1 1
2 3 0
3 1 0
4 7 1
. . .
. . .
我想做的是创建一个新的数据框,其中包含每个ISCO组的职业失业(变量1-0表示就业状况,其中1表示被雇用,0表示失业)
j个ISCO组中每个组的公式为:
(j中的失业人数)/(j中的失业人数+ j中的就业人数)×100。
但是我不知道如何在R中进行此操作。我曾考虑过创建循环函数,但似乎在R中最好使用apply()函数家族。(另外,请考虑我拥有的ISCO组不是线性增加的数字线,而是从1到99的数字,并且不会全部出现。例如,我的ISCO变量中的值可能为3,4和6,但不是5。显然,我只需要对样本中出现的值进行计算即可。
有人可以帮我吗?谢谢
您可以使用mean
逻辑值来计算比率。
与dplyr
:
library(dplyr)
df %>%
group_by(ISCO) %>%
summarise(unemployment = mean(EMPLOYMENT == 0) * 100)
在基数R中:
aggregate(EMPLOYMENT~ISCO, df, function(x) mean(x == 0) * 100)
和data.table
:
library(data.table)
setDT(df)[, unemployment = mean(EMPLOYMENT == 0) * 100, ISCO]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句