Привет в настоящее время у меня есть серия данных, и я представляю с таблицей частот, разделенной из-за intérvalos, что являются следующими:
intérvalos были вычислены с:
cut(datos, nclass.Sturges(datos))
(4.95,14] (14,23] (23,32] (32,41] (41,50] (50,59.1]
Случай состоит в том, что я хочу вычислить средний показатель и моду и следовательно нуждаюсь в нижнем пределе, а следовательно он хотел знать, как он мог бы вмещаться например стоимости (14, 23]
14
.
Спасибо.
Возможное решение:
Сохранять данные, распределенные по категориям в новой переменной
datosc <- cut(datos, nclass.Sturges(datos))
Получать уровни полученного фактора
lvls <- levels(datosc)
Потом с функцией strsplit, разделять каждый текст ('(41,50]'
) из-за запятой
cortes <- strsplit(lvls, ",")
Предыдущее возвращает список, где каждый элемент - вектор две стоимость, а следовательно мы нуждаемся в первом элементе каждого вектора, для этого мы используем функцию lapply
чтобы применять функцию head
в каждый элемент списка с параметром 1
primerel <- lapply(cortes, head, 1)
Предыдущую стоимость мы достаем первую скобку
primerel <- gsub("\\(", "", primerel)
В конце концов мы это вынуждаем в числовую стоимость
primerel <- as.numeric(primerel)
Пример
> datos <- rnorm(10)
>
> datosc <- cut(datos, nclass.Sturges(datos))
>
> lvls <- levels(datosc)
> lvls
[1] "(-1.33,-0.934]" "(-0.934,-0.536]" "(-0.536,-0.138]" "(-0.138,0.26]" "(0.26,0.66]"
>
> cortes <- strsplit(lvls, ",")
> cortes
[[1]]
[1] "(-1.33" "-0.934]"
[[2]]
[1] "(-0.934" "-0.536]"
[[3]]
[1] "(-0.536" "-0.138]"
[[4]]
[1] "(-0.138" "0.26]"
[[5]]
[1] "(0.26" "0.66]"
>
> primerel <- lapply(cortes, head, 1)
> primerel
[[1]]
[1] "(-1.33"
[[2]]
[1] "(-0.934"
[[3]]
[1] "(-0.536"
[[4]]
[1] "(-0.138"
[[5]]
[1] "(0.26"
>
> primerel <- gsub("\\(", "", primerel)
> primerel
[1] "-1.33" "-0.934" "-0.536" "-0.138" "0.26"
>
> primerel <- as.numeric(primerel)
> primerel
[1] -1.330 -0.934 -0.536 -0.138 0.260
>
Ты мог бы использовать функцию sub R для каждого случая. Эта функция remplaza характер из-за одного в выбор. Здесь например мы заменяем все то, что после запятой, для каждого элемента, из-за пустоты в sub(",.*", "", x)
например мы даем ему "(2.25, 67]"
будешь возвращаться "(2.25"
потом чтобы доставать начальную скобку тебя делает его одним substring
и применять это к нему ко всему набору данных с одним sapply
.
это было бы более или менее так
cl <- cut(datos, nclass.Sturges(datos))
infs <- sapply(b, function(x) substring(sub(",.*", "", x),2,5))
infs <- as.numeric(infs)
Я надеюсь, что он помогает.
Это podГ©s делать с регулярными выражениями используя ее funciГіn sub.
intervalos <- cut(datos, nclass.Sturges(datos))
intervalos <- as.character(intervalos)
lim_inf <- as.numeric(sub("\\((.*),.*\\]", "\\1", intervalos))
lim_inf
Из сходной формы podГ©s делать это для верхнего предела реализовывая минимальные изменения в patrГіn ее funciГіn sub.