Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.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中分发数据的嵌套if语句_R_If Statement_Distribution - Fatal编程技术网

用于在R中分发数据的嵌套if语句

用于在R中分发数据的嵌套if语句,r,if-statement,distribution,R,If Statement,Distribution,我有4列(年龄、广泛年龄、性别、种族)的人口普查数据,每个人有多行。除此之外,我还有不同年龄组和种族的就业类型数据。从这些数据集中,我知道按“年龄”组划分的每种就业类型的人数,但只知道按“大年龄”组划分的人群的种族 例如,我知道23名年龄在16-19岁之间的男性、53名年龄在20-21岁之间的男性和42名年龄在22-24岁之间的男性从事兼职工作,但我只知道16-24岁这一“大年龄”群体的种族,我知道38名男性是白人,依此类推 我是R的新手,并且已经设法为IF“gender”和IF“Age”做了I

我有4列(年龄、广泛年龄、性别、种族)的人口普查数据,每个人有多行。除此之外,我还有不同年龄组和种族的就业类型数据。从这些数据集中,我知道按“年龄”组划分的每种就业类型的人数,但只知道按“大年龄”组划分的人群的种族

例如,我知道23名年龄在16-19岁之间的男性、53名年龄在20-21岁之间的男性和42名年龄在22-24岁之间的男性从事兼职工作,但我只知道16-24岁这一“大年龄”群体的种族,我知道38名男性是白人,依此类推

我是R的新手,并且已经设法为IF“gender”和IF“Age”做了IF语句,那么他们是兼职,但这会填充所有行。我试图找到一种方法,根据我从人口普查数据中了解到的情况来指定分配,因此第五列按“年龄”组填充兼职员工的正确数量,但对于每个种族组中随机分配的“大年龄”员工

我认为我需要创建一个函数,但对合并分发部分有点困惑。任何建议都会被接受

示例数据:

Age     Broad Age       Gender      Ethnicity
16-17   16-24       Male            White
16-17   16-24       Male            White
16-17   16-24       Male            Asian
16-17   16-24       Male            Asian
16-17   16-24       Male            Asian
18-19   16-24       Male            White
18-19   16-24       Male            White
18-19   16-24       Male            White
18-19   16-24       Male            White
18-19   16-24       Male            White
外部数据示例(按年龄划分的就业人数):

外部数据示例(按种族和年龄划分的就业类型): 16-24岁男性:

Employment Type    White    Mixed/Multiple    Asian    African   Caribbean    Other
Part-time          93.27%      0.90%           4.48%     0%        0.45%        0.90%
Full-time          94.64%      0.89%           5.0%      0%         0.86%       1.79%
根据外部数据的百分比,我需要什么:

Age     Broad Age       Gender      Ethnicity    Employment Type
16-17   16-24       Male            White          Student
16-17   16-24       Male            White          Part-time
16-17   16-24       Male            Asian          Student
16-17   16-24       Male            Asian          Student
16-17   16-24       Male            Asian          Full-time
18-19   16-24       Male            White          Student
18-19   16-24       Male            White          Student
18-19   16-24       Male            White          Unemployed
18-19   16-24       Male            White          S-E:full-time
18-19   16-24       Male            White          Student

根据我从两个外部来源了解到的分布情况,是否有办法填写第五列(就业类型)?

我将包括一个新的列,将年龄组分为广义年龄组,因为在某些分析中,您需要降低年龄分辨率,因为您无法提高广义年龄组的分辨率。因此,年龄“16-17”、“18-19”、“19-20”、“21-22”、“22-23”将在新的列中出现标签“16-24”,与广泛的年龄组相当。然后,您可以使用“合并”来组合它们,例如

merge(dataset1,dataset2,by=c("new_age_group"),all.x=TRUE,incomparables=NA)
要预先创建新列,请使用以下命令

dataset1$new_age_group[dataset1$Age == '19-20'] <- '16-24'

dataset1$new\u age\u group[dataset1$age=='19-20']从您的示例数据中,应该可以通过
age
获得不同
种族的人数。您的示例数据是否与您的情况不匹配?我推测您有两个不同的数据集。您能否为这两个数据集提供示例数据,并提供一个示例输出,以显示您想要实现的目标?示例数据与实际情况相符,外部数据集是问题所在。我认为我需要做的是,如果16-17岁为男性,那么x%的员工在PT工作,如果16-24岁为男性,那么x%的PT员工是白人(例如)。我将在下面添加额外的数据,因为这里无法容纳它。谢谢。谢谢@horseshoe,我将创建一个新的合并列,这可能会使这些年龄组的数据分发更容易。我有更多的数据将“年龄”分为5岁组,但随后种族增加到25岁的“广泛年龄”组。希望我能很快将它整合到发行版中!
dataset1$new_age_group[dataset1$Age == '19-20'] <- '16-24'