-5

嘿伙计们,我想在 R 中循环;谁能帮帮我

例如,我有积分总和,我不希望 empid 在积分总和的 0-10% 内,依此类推;如何在 R 中做

例如,我有数据

empid               sumofpoints
  1                       10
  2                       30 

我想要数据为

percentageofsumpoints       countofempid
   0-10                        4
  11-20                        5
  21-30                        6

等等....如何在 R 中做到这一点,我是否必须为它安装任何软件包

4

2 回答 2

2

无需安装包。见http://nunn.rc.fas.harvard.edu/groups/pica/wiki/1f131/

简单的for循环

 for (i in 1:10){
     print(i)
 }

在您的示例中,假设您的数据存储在名为df

res <- NULL
groups <- c(0,10,20,30,40,...)
for (i in 2:length(groups)){
    res <- rbind(res,c(paste(groups[i],groups[i-1],sep="-"),nrow(df[df$sumofpoints <= groups[i] & df$sumofpoints > groups[i-1],])))
}

apply如果您想避免for语句,也可以使用函数。这个例子我直接取自帮助文件

 x <- cbind(x1 = 3, x2 = c(4:1, 2:5))
 dimnames(x)[[1]] <- letters[1:8]
 apply(x, 2, mean, trim = .2)

进一步编辑如何避免循环

于 2013-08-16T12:51:48.560 回答
0

对于大型数据集,请参阅包foreach。这允许%do%使用%dopar%.

http://cran.r-project.org/web/packages/foreach/vignettes/foreach.pdf

对于并行计算,请注意您将需要一个后端,例如“doParallel”或“DoSNOW”。还有“doMC”,它只适用于支持 fork 系统调用的操作系统(这意味着不支持 Windows)。

于 2013-08-16T14:18:04.473 回答