«data» - это data.frame с 10 числовыми переменными. Я хочу сделать все переменные классифицированными как 6 переменных (менее 5%, от 5% до 25%, от 25% до 50%, от 50% до 75%, от 75% до 95%, более 95%Я хочу сделать это с помощью функции, чтобы я мог распределить все переменные по категориям.
Я могу сделать это только без функции, как показано ниже, поэтому мне приходится повторять одни и те же коды снова и снова.
m1<- quantile(data$val, 0.05)
m2<- quantile(data$val, 0.25)
m3<- quantile(data$val, 0.5)
m4<- quantile(data$val, 0.75)
m5<- quantile(data$val, 0.95)
data$val[data$val<m1] = "below0.05"
data$val[data$val>= m1& data$val<m2 ] = "0.05to0.25"
data$val[data$val>= m2& data$val<m3 ] = "0.25to0.5"
data$val[data$val>= m3& data$val<m4 ] = "0.5to0.75"
data$val[data$valT>= m4& data$val<m5 ] = "0.75to0.95"
data$val[data$val>= m5] = "upper0.95"
data$val <-as.factor(data$val)
Я пробовал некоторые коды с lapply () и функцией (data, name)
fun =function(data, name) {
y <-get(name,data)
m1<- quantile(name,data, 0.05)
m2<- quantile(name,data, 0.25)
m3<- quantile(name,data, 0.5)
m4<- quantile(name,data, 0.75)
m5<- quantile(name,data, 0.95)
RB = rbind(m1, m2, m3, m4, m5)
dimnames(RB)[[2]] = "Value"
name$data[ name$data<m1] = "below0.05"
name$data[ name$data>= m1& name$data<m2 ] = "0.05to0.25"
name$data[ name$data>= m2& name$data<m3 ] = "0.25to0.5"
name$data[ name$data>= m3& name$data<m4 ] = "0.5to0.75"
name$data[ name$data>= m4& name$data<m5 ] = "0.75to0.95"
name$data[ name$data>= m5] = "upper0.95"
name$data <-as.factor(name$data)
}
Это работает только на полпути. Я хочу знать, как сделать это правильно. Кроме того, я хочу знать, как применить здесь «lapply ()», чтобы можно было легко классифицировать все переменные. Пожалуйста, помогите!
Error in `$<-.data.frame`(`*tmp*`, "name", value = character(0)) :
replacement has 0 rows, data has 301
In addition: Warning messages:
1: Unknown or uninitialised column: 'name'.
Show Traceback
Перезапустите с Debug