通过预先选择的数据子集在R中进行循环

通过预先选择的数据子集在R中进行循环,r,loops,subset,R,Loops,Subset,为了对欧洲社会调查(ESS)进行分析,我试图计算受教育程度高于父母的受访者的比例。我打算使用for循环进行计算。但是,我无法分别计算每个国家和年份的份额。数据框中的行是个人观察(约400k),我有一行指示响应者的国家(cntry)和年份(ESSHARD)。我的代码如下所示 for (i in 1:nrow(ESS_cleann)) { ESS_cleann$abs_mobility[i] <- ESS_cleann[ESS_cleann[cntry]==i && E

为了对欧洲社会调查(ESS)进行分析,我试图计算受教育程度高于父母的受访者的比例。我打算使用for循环进行计算。但是,我无法分别计算每个国家和年份的份额。数据框中的行是个人观察(约400k),我有一行指示响应者的国家(cntry)和年份(ESSHARD)。我的代码如下所示

for (i in 1:nrow(ESS_cleann)) {


  ESS_cleann$abs_mobility[i] <- ESS_cleann[ESS_cleann[cntry]==i && ESS_cleann[essround]==i] length(ESS_cleann$educ_mobility[i] [ESS_clean$educ_mobility [i] == "U"])/ESS_cleann[ESS_cleann[cntry]==i&& ESS_cleann[essround]==i] length(ESS_cleann$educ_mobility[i]) 
}

数据表听起来像是您需要的包。您不提供任何数据来重现问题,但类似的内容应该可以:

DT[,.SD[ education.level > parent.education.level, .N/nrow(.SD)], by= c("country", "year") ]
for (year in years) {
   for (country in countries){
    subtable <- table[year==yer & country===countr]
    store.in.some.variable.or.table.or.something <- nrow( subtable [ education > parental.education, ]) / nrow(subtable)
 } 
}
如果您想使用for循环来实现这一点,我想类似这样的方法会起作用:

DT[,.SD[ education.level > parent.education.level, .N/nrow(.SD)], by= c("country", "year") ]
for (year in years) {
   for (country in countries){
    subtable <- table[year==yer & country===countr]
    store.in.some.variable.or.table.or.something <- nrow( subtable [ education > parental.education, ]) / nrow(subtable)
 } 
}
for(以年为单位){
用于(国家中的国家){

subtable数据表听起来像是您需要的软件包。您不提供任何数据来重现问题,但类似的内容应该可以:

DT[,.SD[ education.level > parent.education.level, .N/nrow(.SD)], by= c("country", "year") ]
for (year in years) {
   for (country in countries){
    subtable <- table[year==yer & country===countr]
    store.in.some.variable.or.table.or.something <- nrow( subtable [ education > parental.education, ]) / nrow(subtable)
 } 
}
如果您想使用for循环来实现这一点,我想类似这样的方法会起作用:

DT[,.SD[ education.level > parent.education.level, .N/nrow(.SD)], by= c("country", "year") ]
for (year in years) {
   for (country in countries){
    subtable <- table[year==yer & country===countr]
    store.in.some.variable.or.table.or.something <- nrow( subtable [ education > parental.education, ]) / nrow(subtable)
 } 
}
for(以年为单位){
用于(国家中的国家){

subtable我不太清楚我是否理解,但您是否正在尝试这样做

库(dplyr)
设定种子(2020年)
碳纳米管:18 x 5
#>#组:cntry,Esshall[6]
#>cntry ESSHARD移动计数perc
#>               
#>1在1 D 6 0.429
#>2时为1牛40.286
#>3在1 U 4 0.286处
#>第2天4点30.273分
#>5在2n5 0.455
#>6在2 U 3 0.273处
#>7在第3天5 0.333
#>8时3分40.267分
#>9在3 U 6 0.4处
#>10英国1d7 0.318
#>11英国1北6 0.273
#>12英国1 U 9 0.409
#>13英国2 D 4 0.25
#>14英国2 N 7 0.438
#>15英国2 U 5 0.312
#>16英国3 D 7 0.318
#>17英国3 N 10 0.455
#>18英国3 U 5 0.227

由(v0.3.0)创建于2020-05-11,我不太清楚我是否理解,但您是否正在尝试这样做

库(dplyr)
设定种子(2020年)
碳纳米管:18 x 5
#>#组:cntry,Esshall[6]
#>cntry ESSHARD移动计数perc
#>               
#>1在1 D 6 0.429
#>2时为1牛40.286
#>3在1 U 4 0.286处
#>第2天4点30.273分
#>5在2n5 0.455
#>6在2 U 3 0.273处
#>7在第3天5 0.333
#>8时3分40.267分
#>9在3 U 6 0.4处
#>10英国1d7 0.318
#>11英国1北6 0.273
#>12英国1 U 9 0.409
#>13英国2 D 4 0.25
#>14英国2 N 7 0.438
#>15英国2 U 5 0.312
#>16英国3 D 7 0.318
#>17英国3 N 10 0.455
#>18英国3 U 5 0.227

由(v0.3.0)于2020-05-11创建,您好,欢迎使用StackOverflow!您能提供一些数据样本,以便我们重现问题吗?这使帮助更容易。例如,使用
head(ESS_cleann)的结果
。此外,对于这种大小的计算,for循环可能不是一个好主意。可能有一种更快的方法。此外,到底出了什么问题?您收到错误消息了吗?您好,谢谢您的快速回复。由于数据集有1700个变量,我在下面显示了包含所有必要变量的数据子集。您好,欢迎使用堆栈溢出!您能提供一些数据样本以便我们重现问题吗?这样更容易提供帮助。例如,使用
head(ESS_cleann)的结果
。此外,对于这种大小的计算,for循环可能不是一个好主意。可能有一种更快的方法。此外,到底出了什么问题?您收到错误消息了吗?您好,谢谢您的快速回复。由于数据集有1700个变量,我在下面显示了包含所有必要变量的数据子集。请在下面应用代码我的案例现在看起来是这样的:x在我的案例中应用代码现在看起来是这样的:x不客气。正如上面在R for循环中评论的人通常不需要。不客气。正如上面在R for循环中评论的人通常不需要。