Недавно я начал работать с R. У меня есть набор данных, состоящий из двух столбцов и 100 000 строк, как показано ниже:
Y TOTA
1 1 403500.000
2 1 188334.000
3 0 812387.000
4 0 163626.000
5 1 49527.000
6 1 48661.000
7 0 36712.000
8 1 31745.000
9 1 23342.000
10 0 46835.000
...... . .........
100000 0 10.982
Переменная Y может иметь только два значения: 0 или 1, тогда как переменная TOTA может принимать различные значения. Резюме функции дает мне следующий результат:
Y TOTA
Min. :0.0000 Min. : 0
1st Qu.:0.0000 1st Qu.: 939
Median :1.0000 Median : 3918
Mean :0.5113 Mean : 40245
3rd Qu.:1.0000 3rd Qu.: 11028
Max. :1.0000 Max. :18938000
NA's :261
ЦЕЛЬ:
Я хотел бы создать таблицу с 10 строками и 3 столбцами. Каждая строка представляет дециль моего набора данных, а последняя показывает NA. Теперь я хотел бы заполнить свою таблицу, глядя на набор данных. Если первый столбец в наборе данных равен 1, добавьте +1 к созданной таблице, где значение соответствует диапазону значений одного из столбцов и столбца «Количество активных компаний». Если первое значение равно 0, добавьте +1 в столбец "Количество пассивных компаний" в соответствующей строке, где значение соответствует диапазонам значений таблицы. Каждая строка таблицы представляет разные диапазоны для переменной TOTA.
ЧТО Я ПЫТАЛСЯ
До сих пор я пытался создать таблицу, которая будет содержать результат обработки моего набора данных.
Number Active Companies Number Passive Companies Total
1 0 0 0
2 0 0 0
3 0 0 0
4 0 0 0
5 0 0 0
6 0 0 0
7 0 0 0
8 0 0 0
9 0 0 0
10 0 0 0
result<-matrix(data = 0, nrow = 10, ncol = 3, byrow = FALSE, dimnames = list(1:10,c("Number Active Companies","Number Passive Companies","Total")));
После этого я создал 10 групп, которые содержат разные диапазоны моей переменной:
x > 0 && x < 100
x > 100 && x < 1000
x > 1000 && x < 10000
x > 10000 && x < 100000
x > 100000 && x < 1000000
x > 1000000 && x < 1000000
x > 5938000 && x < 10938000
x > 10938000 && x < 15938000
x > 15938000 && x < 18938000
x=NA
Теперь я хотел бы заполнить предыдущую таблицу таким образом. Я хочу проанализировать каждую строку переменной Y, если она равна 1, она должна добавить 1 к номеру столбца активных компаний, а в строке, в которой число принадлежит к тому же, когда Y равно нулю.
for(i in TOTA){
if (Y=1)
if(x > 0 && x < 100){
}else if(x > 100 && x < 1000){
}else if(x > 1000 && x < 10000){
}else if(x > 10000 && x < 100000){
}else if(x > 100000 && x < 1000000){
}else if( x > 1000000 && x < 1000000){
}else if( x > 1000000 && x < 1000000){
}else if( x > 5938000 && x < 10938000){
}else if( x > 10938000 && x < 15938000){
}else if( x > 15938000 && x < 18938000) {
}else{
//Nas
}
}else if(Y=0){
if(x > 0 && x < 100){
}else if(x > 100 && x < 1000){
}else if(x > 1000 && x < 10000){
}else if(x > 10000 && x < 100000){
}else if(x > 100000 && x < 1000000){
}else if( x > 1000000 && x < 1000000){
}else if( x > 1000000 && x < 1000000){
}else if( x > 5938000 && x < 10938000){
}else if( x > 10938000 && x < 15938000){
}else if( x > 15938000 && x < 18938000) {
}else{
//Nas
}
}
ВОПРОСЫ
Как я могу написать в таблице? Как сделать этот процесс проще? Как я могу создать гистограмму этой таблицы?
Мне интересно, правильно ли я поступаю, учитывая тот факт, что я прочитал руководство по функциям quantile() и centile(), и кажется, что они делают одно и то же.
Не могли бы вы дать мне несколько рекомендаций и, возможно, несколько команд для достижения моей цели?
Спасибо
table(cut(dataset$TOTA[dataset$Y == 0], c(0, 100, 1000, ...)))
. (и второй раз сY == 1
) - person alexis_laz   schedule 20.04.2014else
, практически гарантировано, что есть гораздо лучший способ сортировки или разделения наборов данных. Здесь я мог бы рассмотретьhist(log(data))
- person Carl Witthoft   schedule 20.04.2014