LINUX.ORG.RU

Знатокам R. Как бы так эдак отсортировать данные?


0

1

Такс, допустим дано csv:

A , B
1 , 4
2 , 4
3 , 3
4 , 4
5 , 1
6 , 6
7 , 6
8 , 1
9 , 5
10 , 6

Сперва его надо отсортировать по возрастанию переменной B:

A , B
5 , 1
8 , 1
3 , 3
1 , 4
2 , 4
4 , 4
9 , 5
6 , 6
7 , 6
10 , 6

Потом сгруппировать параметр B сгрупировать по критериям[1-2,3-4,5-6] и подсчитать кол-во попавших туда значений:

1-2 , 2
3-4 , 4
5-6 , 4

Вот так. Можно ли с помошью R такое провернуть, или прибегать к помощи отдельных скриптов?

З.Ы. в R пока только вникаю.

★★★★★
Ответ на: комментарий от psv1967

> read.csv("test.csv")[order(read.csv("test.csv")$B),]
    A B
5   5 1
8   8 1
3   3 3
1   1 4
2   2 4
4   4 4
9   9 5
6   6 6
7   7 6
10 10 6

> table(cut(read.csv("test.csv")$B, 3))

(0.995,2.67]  (2.67,4.33]     (4.33,6] 
           2            4            4 
psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

Спасибо, в одну строку прям )
А где вообще про подобные фишки можно почитать поподробнее?

Siado ★★★★★
() автор топика
Ответ на: комментарий от psv1967

Начал уже читать доки, но пока появился вопрос с забеганием вперед:

A , B            B                B
1 , 4           4+3               7
2 , 4      ==>            ==>     10
3 , 3                             11
4 , 4           4+6
5 , 1           
6 , 6                     
7 , 6           6+5
8 , 1           
9 , 5                      

Можно ли вот так по хитрому преобразовать? т.е. разбить выборку на n частей (в нашем случае по 3 значения в части), сложить первое и последнее значение каждой части и перекинуть это добро в новый вектор.

Siado ★★★★★
() автор топика
Ответ на: комментарий от psv1967
  read.csv("test1.csv")$B[seq(1,9-2,3)]+read.csv("test1.csv")$B[seq(1+2,9,3)]

[1]  7 10 11

Логика вычисления индексов я думаю прозрачна... Это всё APL сторона R.

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

Спасибо, логика вычислений кажись понятна )

Siado ★★★★★
() автор топика
Ответ на: комментарий от psv1967

>а зачем такое?

Такое нужно для вычисления пакета марковица, чтобы сделать таблицу прибыльности ценной бумаги за период времени. То есть распиливаем на мелкие кусочки какую-нить бумагу и у каждлого кусочка отнимаем его начальную цену от конечной. (ошибся с плюсом в предыдущем посте, надо минус)

Siado ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.