Prob stat: 数据集包含两列mstr_program_list,Loc_cat为600000.Loc_cat列包含缺失和非缺失的单元格。其他专栏没有NA。对于mstr_program_list中的每个prog,需要查找与该程序关联的loc-cat的总数,非缺失行的百分比以及非缺失行中找到的类别的数量。
Ex:对于未知的prog - 总行数= 3,loc_cat中的非缺失行是1,因此%是(2/3)* 100,分类的类别数是2(休:完整)(其余:lim) )
> head(data)
L.Name mstr_program_list loc_cat
1 Six J'SGroup Unknown <NA>
2 Bj's- Maine Roasted Tomat Rests: Full
3 Bj's- Maine Unknown Rests: Full
4 Brad's Q Q Unknown Rests: lim
预期产出:
mstr_prog total_count %good(non missing rows) Number of loc_cat
Unknown 3 66.7 2
下面的代码需要花费很多时间。实际上结果没有显示出来。任何人都可以帮助我改进代码。根据我的观点,使用此代码的问题是添加向量。
经过研究,我开始知道向vector添加值而不使用append并使用c()
v <- c(v, 'y') # adding elements into a vector
代码:
data <- read.csv("MgData.csv",header=T, na.strings="", colClasses = classes, nrows = 600338,comment.char="") ## import data.
data_NoNull <- na.omit(data)
mpl_unique <- unique(data$mstr_program_list)
mas_Prog_List <- as.character()
loc_Count <- as.numeric()
per_Seg <- as.numeric()
num_Seg <- as.numeric()
for(i in 1:length(mpl_unique)) {
l_t <- length(data$mstr_program_list[data$mstr_program_list == i]) # loc_cat specific to prog
l_g <- length(data_NoNull$mstr_program_list[data_NoNull$mstr_program_list == i]) ## to know filled ones excluding empty
s <- subset(data_NoNull, mstr_program_list==i, select =c(loc_cat))
if((any(i == mas_Prog_List)) == FALSE) {
no_Seg <- nrow(unique(s))
mas_Prog_List <- c(mas_prog_list, i) # Adding values to vector
loc_Count <- c(loc_count, l_t)
perct_Seg <- ((l_g/l_t)*100)
per_Seg <- c(per_Seg, perct_seg)
Num_Seg <- c(Num_Seg, no_seg)
}
}
}
Seg_analysis <- data.frame(mas_Prog_List, loc_Count, per_Seg, num_Seg)
我是R.的新手。通过代码中的更改,使用命名约定/术语来纠正我。 谢谢