我正在根据另一列计算列的模式,但是我无法将函数的返回附加到向量:
getmode <- function(v) {
uniqv <- unique(v)
uniqv[which.max(tabulate(match(v, uniqv)))]
}
上面的功能给我一个列的模式。当我调用该函数时,我得到了 以下列方式输出:
x<-income_train$workclass[income_train$educational_num == '16']
x
输出:
[1] Private
Levels: ? Federal-gov Local-gov Never-worked Private Self-emp-inc Self-emp-not-inc State-gov Without-pay
现在我想创建一个函数,对于educ_num列的每个值,即1到16,我得到工作类的模式。所以我写了代码:
`z <-c()
for (i in 1:16){
x<-NULL
x<-income_train$workclass[income_train$educational_num == i]
result <- getmode(income_train$workclass)
print(result)
z <- c(z,result)
}
print(z)`
上面的代码给出了如下输出:
[1] Private
Levels: ? Federal-gov Local-gov Never-worked Private Self-emp-inc Self-emp- not-inc State-gov Without-pay
[1] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
我不知道5的来临。我希望它结果包含16“私人”。这证明了对于工作区列的education_num列模式的每个值都是“私有”。请帮忙。
答案 0 :(得分:0)
将来,请尝试使用dput
提供数据集,以便其他人可以更轻松地了解您的数据。
尝试使用data.table:
library(data.table)
setDT(income_train)
income_train[, getmode(workclass), educational_num]
这有效地调用了education_num上每个组的getmode。
希望这适合你。