我有一个具有以下结构的数据集
ID ISCO EMPLOYMENT
1 1 1
2 3 0
3 1 0
4 7 1
. . .
. . .我想做的是创建一个新的数据,其中包含每个职业分类组的职业失业情况(变量1-0表示就业状况,其中1意味着就业,0表示失业)。
每一个j ISCO组的公式是:
(失业人数j) /(失业人数j+在j就业人数)×100。
但是我不知道如何在R中这样做,我想要创建一个循环函数,但是在R中,似乎最好使用apply()函数族。(同样,考虑到我所拥有的ISCO群不是线性增长的数列,而是从1到99的数字,并不是所有的都出现了。例如,ISCO变量中的值可能为3、4和6,但不是5。显然,我只需要对示例中出现的值进行计算)。
有人能帮我吗?谢谢
发布于 2020-11-16 01:18:12
您可以使用逻辑值的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]https://stackoverflow.com/questions/64851487
复制相似问题