Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算r中具有唯一值的函数_R - Fatal编程技术网

计算r中具有唯一值的函数

计算r中具有唯一值的函数,r,R,我有一个具有以下结构的数据集 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 但

我有一个具有以下结构的数据集

  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。显然,我只需要对样本中出现的值进行计算)。 有人能帮我吗?
谢谢

您可以使用逻辑值的
平均值
计算比率

使用
dplyr

library(dplyr)
df %>%
  group_by(ISCO) %>%
  summarise(unemployment = mean(EMPLOYMENT == 0) * 100)

在R基中:

aggregate(EMPLOYMENT~ISCO, df, function(x) mean(x == 0) * 100)
数据。表

library(data.table)
setDT(df)[, unemployment = mean(EMPLOYMENT == 0) * 100, ISCO]

您可以使用逻辑值的
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)
数据。表

library(data.table)
setDT(df)[, unemployment = mean(EMPLOYMENT == 0) * 100, ISCO]