Rambler's Top100
Lo-Fi Version* Virtual  Russian keyboard  Russian  
Molbiol.ru | Project | Protocols | Programs | Literature
Web | Companies | Marketplace | Labor exchange

Today's active topics  [ Log In* | Register* ]  
   



Forum: 
 

Click to add to Selected Topics* R Help -- Давайте составим русский FAQ --
Topic Curators:* plantago
Options: I want to be curator* · Track this topic* · Email this topic · Print this topic*
Topic view:* Outline · [ Standard ] · Linear+


pages (55): « < 51 52 53 54 55 > 
Reply to this topicStart new topicStart Poll
User is offline! PS2004R
Advanced Member



 old post 12.10.2019 12:47     Report Post  Report Post for topic curator       Photo  Personal message  Send an e-mail  Web site

(DSV2015 @ 12.10.2019 12:40)
Link to the original post  PS2004R
C NA в исходном векторе работает хорошо. Но если взять исходный вектор без NA(чтобы не путаться) и прибавлять к x1 не 0.5*x1, а лаг от x1(при сдвиге появляется NA), то не работает.



"Укоротите" индекс по которому обходите ряд соответственно размеру окна. Или пишите код функции учитывая переменную ширину окна.

Это целиком ваше решение, со стороны какое решение будет корректным не видно.
User is offline! DSV2015




 old post 12.10.2019 13:15     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(PS2004R @ 12.10.2019 13:47)
Link to the original post  "Укоротите" индекс по которому обходите ряд соответственно размеру окна. Или пишите код функции учитывая переменную ширину окна.

Это целиком ваше решение, со стороны какое решение будет корректным не видно.


Вчера мучался, не получилось. Надо как то вставить игнорирование NA, то есть если NA в одном из аргументов
функции, то возвращаем NA, если числа - считаем дальше. Из предыдущего примера должно получится следующее-

1 2 3 исходный вектор
+
NA 1 2 лаг от него
=
NA 3 5 дальше берем полученое и прибавляем к нему его же лаг
+
NA NA 3
=
NA NA 8 конечный результат

Должно получится

1 NA NA
2 3 NA
3 5 8

Своя функция работает нормально, возвращает NA.
CODE

> plus <- function(a, b) a + b
>
> x <- 1:3                      # исходный вектор x
> Lag1x <- c(NA, head(x, -1))   # лаг от x(появляется NA при сдвиге)
> x; Lag1x
[1] 1 2 3
[1] NA  1  2
> plus(x, Lag1x)
[1] NA  3  5


This post has been edited by DSV2015: 12.10.2019 13:28
User is offline! PS2004R
Advanced Member



 old post 12.10.2019 15:34     Report Post  Report Post for topic curator       Photo  Personal message  Send an e-mail  Web site

(DSV2015 @ 12.10.2019 13:15)
Link to the original post  
Своя функция работает нормально, возвращает NA.




"Укоротите" индекс по которому обходите ряд соответственно размеру окна. Или пишите код функции учитывая переменную ширину окна.
User is offline! ПолинаШ
Member



 old post 10.11.2019 10:54     Report Post  Report Post for topic curator       Personal message  Send an e-mail

Есть последовательность типа
"asd",'jjjh", "break", "hasf", "break", "ljs", "kjhh", "nk", "break"
где "break" - терм-разделитель. Необходимо закодировать подпоследовательности,
т.е. сформировать вектор 1, 1, 1, 2, 2, 3, 3, 3, 3
Последовательность может не заканчиваться "break" (он даже вообще может отсутствовать).

Уверена, что есть какая-то готовая опубликованная функция, поэтому очень не хочется заниматься самовязом (тем более, что имею дело с long data). Заранее благодарна за возможные подсказки.
User is offline! PS2004R
Advanced Member



 old post 10.11.2019 12:14     Report Post  Report Post for topic curator       Photo  Personal message  Send an e-mail  Web site

(ПолинаШ @ 10.11.2019 10:54)
Link to the original post  Есть последовательность типа
"asd",'jjjh", "break", "hasf", "break", "ljs", "kjhh", "nk", "break"
где "break" - терм-разделитель. Необходимо закодировать подпоследовательности,
т.е. сформировать вектор    1, 1, 1, 2, 2, 3, 3, 3, 3
Последовательность может не заканчиваться "break" (он даже вообще может отсутствовать).

Уверена, что есть какая-то готовая опубликованная функция, поэтому очень не хочется заниматься самовязом (тем более, что имею дело с long data).  Заранее благодарна за возможные подсказки.


Это простая операция в базовом R? находите все индексы стопов.

index.stop <- which(v=="break"])

потом генерите свою последовательность с помощью seq()

PS

Что за "большие данные" и в чем их содержите не сказано, поэтому подсказать дальше не могу.
User is offline! Алекс3212




 old post 14.01.2020 22:15     Report Post  Report Post for topic curator       Personal message  Send an e-mail

Добрый день/вечер..Прошу спецов помочь в моей "проблеме", сам я малость застопорился...
Изначально задача у меня была такая:
Есть некоторая таблица из файла Excel, которая выглядит следующим образом на рисунке:
где V1- это номер файла наблюдения в котором содержатся V2 и V3, V4 не имеет значения
Мне необходимо посчитать, количество подряд идущих значений V2+V3 в каждом V1.
Для этого я решил, объединить V1 V2 и V3 в одну переменную ffprpk, сделал столбец дубль этой переменной prpkD, отсортировал в порядке возрастания переменную ffprpk, сместил дубль переменной V1 V2 V3 на одно значение вниз и вычел смещенный дубль из несмещенного, таким образом если значения идут по порядку, то в новом столбце пишется 1, если порядок переменной ffprpk прерывается, то получается иное значное значение, далее я могу отфильтровать только значения с 1.... Далее были планы каким то образом убрать из переменной ffprpk два последних знака, чтобы оставить только 1 и сгрупировать, просумировать данные, тогда я получу по каждому V1 количество идущих подряд V2+V3...не могу понять как убрать два последних числа в переменной и может быть, код можно сделать компактнее если пойти иным путем, пытался применить циклы к этой задаче, но так и не разобрался с ними...

P.S. почему я решил убрать 2 знака из переменной ffprpk на этом этапе, т.к. в V1 содержится не уникальный V2 и не уникальный V3, а уникальны они только если их объединить, то я подумал, что уникальность V2+V3 минус 2 последних значения в V3 мне будет достаточно, чтобы посчитать верно количество идущих подряд V2+V3 в каждом отдельном V1. Ниже код, буду благодарен за любую помощь и комментарии, возможно для моего решения есть совсем простой и элегантный способ получить желаемое.
Или, что будет еще лучше...может кто то поделится способом как посчитать количество подряд идущих данных на V1, например на V1, если V2 на котором с такого то V3 по такой то, такое то кол-во подряд идущих данных...

voenvuz3 <- read.table("G://badchannel0113.asc") %>%
  mutate (ffprpk = ((`V1`*10000+`V2`)*10000+`V3`)) %>%
  mutate(prpkD = ffprpk)%>%
  select(ffprpk, prpkD, V4) %>%
  arrange(ffprpk)
 
voenvuz3


A099 <- voenvuz3 %>%
  mutate_at(-2, ~lead(., 1)) %>% slice(1:(n()-1)) %>%
  mutate(DIF= ffprpk-prpkD) %>% arrange(ffprpk)
A099


This post has been edited by Алекс3212: 15.01.2020 00:05

Attached image(s)
Attached Image1.png
1.png — (13.99k)   

User is offline! plantago
Advanced Member



 old post 15.01.2020 06:47     Report Post  Report Post for topic curator       Personal message  Send an e-mail  Web site

А можно просто либо минимальный работающий пример, который можно запустить?
И/или кусок исходных данных (не картинкой, а числами) и какие бы данные из них хотелось бы сделать?
А то сейчас, я прошу прощения, очень трудно понять, что имеется в виду...
User is offline! plantago
Advanced Member



 old post 15.01.2020 07:24     Report Post  Report Post for topic curator       Personal message  Send an e-mail  Web site

... но вообще-то для того, чтобы найти идущие подряд значения, лучше всего запустить diff() или rle():

===
> aa <- c(1, 1, 2, 3, 3, 1, 2, 2, 2)
> diff(aa)
[1] 0 1 1 0 -2 1 0 0
> c(FALSE, diff(aa) == 0)
[1] FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE TRUE
> rle(aa)
Run Length Encoding
lengths: int [1:5] 2 1 2 1 3
values : num [1:5] 1 2 3 1 2
===
User is offline! Алекс3212




 old post 15.01.2020 12:04     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(plantago @ 15.01.2020 07:47)
Link to the original post  А можно просто либо минимальный работающий пример, который можно запустить?
И/или кусок исходных данных (не картинкой, а числами) и какие бы данные из них хотелось бы сделать?
А то сейчас, я прошу прощения, очень трудно понять, что имеется в виду...


Примера нет, честно сказать я сам не представляю до конца как это должно работать...есть только задача...посчитать количество подряд идущих данных...если данных более 10 подряд, отслеживать по времени сколько это длилось (его нет еще в данных, пока проблема определиться как считать подряд). По сути, это контроль за пропущенными данными, V4 хоть и не используется в этом файле, представляет собой список только пропущенных значений выгруженный из сторонней программы. Часть файла прикрепил к сообщению.
Посчитать общее количество прощенных значений в записи (т.е. в V1) не проблема, в V1+V2 тоже, но т.к. V1+V2 не даст количество пропусков подряд, это не то, т.к. значения могут быть пропущены не подряд, например через 1 значение...вчера попробовал убрать все таки 2 последних значения в V3 и это тоже не то...

Насчет diff и rle спасибо, почитаю подробнее, что это и что дает

This post has been edited by Алекс3212: 15.01.2020 12:14

Attached File(s)

Download attachment badchannel0113_.txt
Size:: 1.83mb
Number of downloads: 109


User is offline! plantago
Advanced Member



 old post 15.01.2020 14:30     Report Post  Report Post for topic curator       Personal message  Send an e-mail  Web site

Хорошо. Вот кусок Ваших данных, первые три колонки:

===
33283.000 7913.000 1904.000
33283.000 7913.000 1905.000
33283.000 7913.000 1906.000
33283.000 7913.000 1907.000
33283.000 7913.000 1908.000
33283.000 7913.000 1909.000
33283.000 7913.000 1910.000
33283.000 7913.000 1911.000
33283.000 7913.000 1912.000
33284.000 7577.000 1522.000
33284.000 7593.000 1290.000
33284.000 7593.000 1291.000
33284.000 7593.000 1313.000
33284.000 7593.000 1328.000
33284.000 7593.000 1341.000
33284.000 7737.000 1576.000
33284.000 7817.000 1696.000
33284.000 7849.000 1751.000
33284.000 7897.000 1724.000
33284.000 7897.000 1725.000
33284.000 7897.000 1737.000
33284.000 7897.000 1742.000
33284.000 7897.000 1763.000
33284.000 7897.000 1766.000
33284.000 7897.000 1769.000
33284.000 7897.000 1770.000
33284.000 7897.000 1771.000
33284.000 7897.000 1772.000
33284.000 7897.000 1773.000
===

Напишите, как должен выглядеть результат.
User is offline! Алекс3212




 old post 15.01.2020 17:53     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(plantago @ 15.01.2020 08:24)
Link to the original post  ... но вообще-то для того, чтобы найти идущие подряд значения, лучше всего запустить diff() или rle():

===
> aa <- c(1, 1, 2, 3, 3, 1, 2, 2, 2)
> diff(aa)
[1]  0  1  1  0 -2  1  0  0
> c(FALSE, diff(aa) == 0)
[1] FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE
> rle(aa)
Run Length Encoding
  lengths: int [1:5] 2 1 2 1 3
  values : num [1:5] 1 2 3 1 2
===


Мне нравится как работает diff (то, что он делает) , я могу заменить им целых 2 строки кода со смещением, ато и больше...но как мне сделать, чтобы он возвращал не вектор, а информация находилась в столбце, чтобы прикрутить это к таблице где есть V1, V2, V3 ?

Attached image(s)
Attached Image1.png
1.png — (34.01k)   

User is offline! plantago
Advanced Member



 old post 15.01.2020 18:15     Report Post  Report Post for topic curator       Personal message  Send an e-mail  Web site

Пожалуйста, напишите, как должен выглядеть результат, используя тот кусок данных, который я поместил выше. Без этого я не в состоянии Вам ответить.
User is offline! Алекс3212




 old post 15.01.2020 20:23     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(plantago @ 15.01.2020 15:30)
Link to the original post  Хорошо. Вот кусок Ваших данных, первые три колонки:

===
  33283.000      7913.000      1904.000
  33283.000      7913.000      1905.000
  33283.000      7913.000      1906.000
  33283.000      7913.000      1907.000
  33283.000      7913.000      1908.000
  33283.000      7913.000      1909.000
  33283.000      7913.000      1910.000
  33283.000      7913.000      1911.000
  33283.000      7913.000      1912.000
  33284.000      7577.000      1522.000
  33284.000      7593.000      1290.000
  33284.000      7593.000      1291.000
  33284.000      7593.000      1313.000
  33284.000      7593.000      1328.000
  33284.000      7593.000      1341.000
  33284.000      7737.000      1576.000
  33284.000      7817.000      1696.000
  33284.000      7849.000      1751.000
  33284.000      7897.000      1724.000
  33284.000      7897.000      1725.000
  33284.000      7897.000      1737.000
  33284.000      7897.000      1742.000
  33284.000      7897.000      1763.000
  33284.000      7897.000      1766.000
  33284.000      7897.000      1769.000
  33284.000      7897.000      1770.000
  33284.000      7897.000      1771.000
  33284.000      7897.000      1772.000
  33284.000      7897.000      1773.000
===

Напишите, как должен выглядеть результат.




Не просто это конечно...но возможно как то так...увидел это на одном сайте, но там под мою задачу не пойдет код, а как пример результата возможно...

CODE

df_out
   City count
1 Mexico   1:2
2 London   0:1
3 London   1:2


если на моем примере то как то так:
33283 7913 x
33283 7577 x
33284 7897 x
и тд., где x это количество данных V3 идущих подряд...чтобы я понимал, не редкостью в моих данных в таком случае будет ситуация, когда будет вот так:
33283 7913 x
33283 7913 x
33283 7913 x
Потому что один V2 (в примере выше 7913) может содержать в разных местах несколько участков V3 в которых данные идут подряд.

Number of thanks: 1These members thanked the author (1): plantago
User is offline! PS2004R
Advanced Member



 old post Post on English  16.01.2020 00:11     Report Post  Report Post for topic curator       Photo  Personal message  Send an e-mail  Web site


> read.table("data.txt")
      V1  V2  V3
1  33283 7913 1904
2  33283 7913 1905
3  33283 7913 1906
4  33283 7913 1907
5  33283 7913 1908
6  33283 7913 1909
7  33283 7913 1910
8  33283 7913 1911
9  33283 7913 1912
10 33284 7577 1522
11 33284 7593 1290
12 33284 7593 1291
13 33284 7593 1313
14 33284 7593 1328
15 33284 7593 1341
16 33284 7737 1576
17 33284 7817 1696
18 33284 7849 1751
19 33284 7897 1724
20 33284 7897 1725
21 33284 7897 1737
22 33284 7897 1742
23 33284 7897 1763
24 33284 7897 1766
25 33284 7897 1769
26 33284 7897 1770
27 33284 7897 1771
28 33284 7897 1772
29 33284 7897 1773
> d <- read.table("data.txt")
> paste(d[,1], d[,2])
[1] "33283 7913" "33283 7913" "33283 7913" "33283 7913" "33283 7913"
[6] "33283 7913" "33283 7913" "33283 7913" "33283 7913" "33284 7577"
[11] "33284 7593" "33284 7593" "33284 7593" "33284 7593" "33284 7593"
[16] "33284 7737" "33284 7817" "33284 7849" "33284 7897" "33284 7897"
[21] "33284 7897" "33284 7897" "33284 7897" "33284 7897" "33284 7897"
[26] "33284 7897" "33284 7897" "33284 7897" "33284 7897"

> rle(paste(d[,1], d[,2]))
Run Length Encoding
  lengths: int [1:7] 9 1 5 1 1 1 11
  values : chr [1:7] "33283 7913" "33284 7577" "33284 7593" "33284 7737" "33284 7817" ...
> res <- rle(paste(d[,1], d[,2]))
> str(res)
List of 2
$ lengths: int [1:7] 9 1 5 1 1 1 11
$ values : chr [1:7] "33283 7913" "33284 7577" "33284 7593" "33284 7737" ...
- attr(*, "class")= chr "rle"

> data.frame(do.call(rbind, strsplit(res$values," ")),x=res$lengths)
    X1  X2  x
1 33283 7913  9
2 33284 7577  1
3 33284 7593  5
4 33284 7737  1
5 33284 7817  1
6 33284 7849  1
7 33284 7897 11
>


Number of thanks: 2These members thanked the author (2): plantago, Алекс3212
User is offline! Алекс3212




 old post 16.01.2020 01:15     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(PS2004R @ 16.01.2020 01:11)
Link to the original post  


Уверен это работает, завтра попробую днем. Спасибо огромное вам))) Сам бы я не догадался)
User is offline! plantago
Advanced Member



 old post 16.01.2020 04:51     Report Post  Report Post for topic curator       Personal message  Send an e-mail  Web site

Вот и чудно. Мораль отсюда та, что нужен прототип -- числовой пример с желаемым результатом или уже почти готовый код. Без него тут просто не ответят, потому что никто не поймет, что же в сущности Вам нужно.
User is offline! Алекс3212




 old post 16.01.2020 14:28     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(PS2004R @ 16.01.2020 01:11)
Link to the original post  


Я поспешил с выводами, к сожалению, это не работает...во всяком случае как хотелось бы... используя этот код я получаю общее количество в Х2, а не только тех которые идут подряд.
С помощью кода действительно можно посчитать сумму каналов, в связке Х1+Х2...
Такого результата я добился уже ранее с помощью вот такого кода, где д это таже таблица из вашего примера:

d1 <- d %>%
  select(V1, V2, V3) %>%
  mutate(mea = (V1*10000+V2)) %>%
  group_by(mea) %>%
  summarise(n = n())
d1


mea
n
1 332837913 9
2 332847577 1
3 332847593 5
4 332847737 1
5 332847817 1
6 332847849 1
7 332847897 11
  



Но я узнал, что то новое для себя, поэтому все равно спасибо) Но вопрос не решен

This post has been edited by Алекс3212: 16.01.2020 14:32

Attached image(s)
Attached Image1.png
1.png — (26.65k)   

User is offline! Алекс3212




 old post 16.01.2020 18:43     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(Алекс3212 @ 16.01.2020 15:28)
Link to the original post  Я поспешил с выводами, к сожалению, это не работает...во всяком случае как хотелось бы... используя этот код я получаю общее количество в Х2, а не только тех которые идут подряд.
С помощью кода действительно можно посчитать сумму каналов, в связке Х1+Х2...
Такого результата я добился уже ранее с помощью вот такого кода, где д это таже таблица из вашего примера:
Но я узнал, что то новое для себя, поэтому все равно спасибо) Но вопрос не решен


Пример почти работающего кода я могу привести еще раз, но я не уверен что я пошел в ту сторону, так как я в тупик попал...
d <- read.table("data.txt")
voenvuz1 <- d %>%
  mutate (ffprpk = ((`V1`*10000+`V2`)*10000+`V3`)) %>%
  mutate(prpkD = ffprpk)%>%
  select(ffprpk, prpkD) %>%
  arrange(ffprpk)
voenvuz1


A099 <- voenvuz1 %>%
  mutate_at(-2, ~lead(., 1)) %>% slice(1:(n()-1)) %>%
   mutate(V4 = 0) %>%
  mutate(DIF= ffprpk-prpkD) %>%
  arrange(ffprpk)
A099

Данный код позволяет идентифицировать подряд идущие данные в V3, пишет 1 в столбец DIF если данные идут по порядку, если порядок прерывается значения отличаются от 1 цы.




где "data.txt" это


V1
<dbl>
V2
<dbl>
V3
<dbl>
1 33283 7913 1904
2 33283 7913 1905
3 33283 7913 1906
4 33283 7913 1907
5 33283 7913 1908
6 33283 7913 1909
7 33283 7913 1910
8 33283 7913 1911
9 33283 7913 1912
10 33284 7577 1522
11 33284 7593 1290
12 33284 7593 1291
13 33284 7593 1313
14 33284 7593 1328
15 33284 7593 1341
16 33284 7737 1576
17 33284 7817 1696
18 33284 7849 1751
19 33284 7897 1724
20 33284 7897 1725
21 33284 7897 1737
22 33284 7897 1742
23 33284 7897 1763
24 33284 7897 1766
25 33284 7897 1769
26 33284 7897 1770
27 33284 7897 1771
28 33284 7897 1772
29 33284 7897 1773
30 77225 7897 1773
31 77225 7897 1774
32 77225 7897 1775
33 77225 7897 1778
34 77225 7897 1880
35 77225 7897 1881
36 77225 7897 1882
36 rows

так же приложил к письму фаил

Мне нужно получить следующее:

This post has been edited by Алекс3212: 16.01.2020 19:38

Attached image(s)
Attached ImageImage.png
Image.png — (9.16k)   

Attached ImageImage1.png
Image1.png — (9.78k)   



Attached File(s)

Download attachment data.txt
Size:: 740 bytes
Number of downloads: 123


User is offline! plantago
Advanced Member



 old post 16.01.2020 19:08     Report Post  Report Post for topic curator       Personal message  Send an e-mail  Web site

В данных у Вас 77225 вместе с 7897 повторяются 7 раз подряд, а Вы почему-то хотите 4 и 3.
User is offline! PS2004R
Advanced Member



 old post 16.01.2020 19:49     Report Post  Report Post for topic curator       Photo  Personal message  Send an e-mail  Web site

(Алекс3212 @ 16.01.2020 14:28)
Link to the original post  Я поспешил с выводами, к сожалению, это не работает...во всяком случае как хотелось бы... используя этот код я получаю общее количество в Х2, а не только тех которые идут подряд.
С помощью кода действительно можно посчитать сумму каналов, в связке Х1+Х2...
Такого результата я добился уже ранее с помощью вот такого кода, где д это таже таблица из вашего примера:
Но я узнал, что то новое для себя, поэтому все равно спасибо) Но вопрос не решен


Не понятно совершенно что нужно.

Attached image(s)
Attached Imagepost_1125819_1579174078.png
post_1125819_1579174078.png — (40.08k)   

User is offline! Алекс3212




 old post 16.01.2020 19:56     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(plantago @ 16.01.2020 20:08)
Link to the original post  В данных у Вас 77225 вместе с 7897 повторяются 7 раз подряд, а Вы почему-то хотите 4 и 3.


Да все верно..они повторяются 7 раз подряд, но там есть так же третье значение, которое если сделать одним значением V1 (77225) c V2 (7897) с V3, получится уникальное значение... Повторяется V1, V2 и V3 если их смотреть поодиночке, повторяется V1+V2, V1+V2+V3 уникальное значение, которое не повторяется, вот мне и нужно посчитать количество подряд идущих этих уникальных значений. И да...
в повторяемом V1 содержатся данные повторяемых V2 в которых содержатся повторяемые (если брать только V3 сам по себе без V1+V2+V3) данные: чтобы уйти от чисел попборую привести пример как выглядят данные и что мне нужно иначе:
исходные данные
X1 X2 X3
Иванов Петр 12 (например время приема лекарства)
Иванов Петр 11
Иванов Саша 12
Сидоров Саша 2
Иванов Глеб 5
Сидоров Саша 8
Иванов Глеб 6
Иванов Глеб 10
Сидоров Саша 1
Иванов Глеб 11

Где в мое представлении я получаю, что:
Иванов Петр 2 (столько часов подряд принимал лекарство)
Иванов Саша 0 (а этот лекарство принимал, но не подряд)
Сидоров Саша 2 (тоже принимал 2 часа подряд лекарство)
Иванов Глеб 2 (принял 2 часа подряд)
Иванов Глеб 2 ( и снова принял 2 часа подряд)

С той лишь разницей, что таким сидоровых и ивановых 3 тысячи и имя тоже меняется очень часто, а интересуют меня только сколько они подряд часов принимали лекарство, не сумма, не количество, а именно периодичность подряд или не подряд.
User is offline! Алекс3212




 old post 16.01.2020 20:04     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(PS2004R @ 16.01.2020 20:49)
Link to the original post  Не понятно совершенно что нужно.


Да извиниюсь, не подписал...я выделил эти данные, чтобы показать, что в них последний столбец не содержит значения подряд, тем не менее, они участвовали в расчете количества, т.е. получилось количество всех x и подряд и не подряд в X1+X2
User is offline! PS2004R
Advanced Member



 old post 16.01.2020 21:03     Report Post  Report Post for topic curator       Photo  Personal message  Send an e-mail  Web site

(Алекс3212 @ 16.01.2020 20:04)
Link to the original post  Да извиниюсь, не подписал...я выделил эти данные, чтобы показать, что в них последний столбец не содержит значения подряд, тем не менее, они участвовали в расчете количества, т.е. получилось количество всех x и подряд и не подряд в X1+X2



> delta <- diff(d[,3])
> delta[which(delta==1)+1] <- 1
> data.frame(d, delta)
      V1  V2  V3 delta
1  33283 7913 1904    1
2  33283 7913 1905    1
3  33283 7913 1906    1
4  33283 7913 1907    1
5  33283 7913 1908    1
6  33283 7913 1909    1
7  33283 7913 1910    1
8  33283 7913 1911    1
9  33283 7913 1912    1
10 33284 7577 1522  -232
11 33284 7593 1290    1
12 33284 7593 1291    1
13 33284 7593 1313    15
14 33284 7593 1328    13
15 33284 7593 1341  235
16 33284 7737 1576  120
17 33284 7817 1696    55
18 33284 7849 1751  -27
19 33284 7897 1724    1
20 33284 7897 1725    1
21 33284 7897 1737    5
22 33284 7897 1742    21
23 33284 7897 1763    3
24 33284 7897 1766    3
25 33284 7897 1769    1
26 33284 7897 1770    1
27 33284 7897 1771    1
28 33284 7897 1772    1
29 33284 7897 1773    1
> delta[which(!(delta==1))] <- 0
> data.frame(d, delta)
      V1  V2  V3 delta
1  33283 7913 1904    1
2  33283 7913 1905    1
3  33283 7913 1906    1
4  33283 7913 1907    1
5  33283 7913 1908    1
6  33283 7913 1909    1
7  33283 7913 1910    1
8  33283 7913 1911    1
9  33283 7913 1912    1
10 33284 7577 1522    0
11 33284 7593 1290    1
12 33284 7593 1291    1
13 33284 7593 1313    0
14 33284 7593 1328    0
15 33284 7593 1341    0
16 33284 7737 1576    0
17 33284 7817 1696    0
18 33284 7849 1751    0
19 33284 7897 1724    1
20 33284 7897 1725    1
21 33284 7897 1737    0
22 33284 7897 1742    0
23 33284 7897 1763    0
24 33284 7897 1766    0
25 33284 7897 1769    1
26 33284 7897 1770    1
27 33284 7897 1771    1
28 33284 7897 1772    1
29 33284 7897 1773    1
> d <- data.frame(d, delta)
> res <- rle(paste(d[,1], d[,2], d[,4]))
> data.frame(do.call(rbind, strsplit(res$values," ")),x=res$lengths)
      X1  X2 X3 x
1  33283 7913  1 9
2  33284 7577  0 1
3  33284 7593  1 2
4  33284 7593  0 3
5  33284 7737  0 1
6  33284 7817  0 1
7  33284 7849  0 1
8  33284 7897  1 2
9  33284 7897  0 4
10 33284 7897  1 5


Number of thanks: 2These members thanked the author (2): plantago, Алекс3212
User is offline! Алекс3212




 old post 17.01.2020 11:57     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(PS2004R @ 16.01.2020 22:03)
Link to the original post  

Это отлично работает на представленных данных из data.txt, спасибо) Буду разбираться теперь, что там происходит за волшебство и применять к своим исходным данным. Вопрос решен)

P.S. почему-то разное количество строк в delta и в d, поэтому объединить их в data.frame пишет что нельзя

вот код
d <- read.table("E:/bad.txt") %>%
  mutate(prpk = (V1*10000+V2)*10000+V3) %>%
  arrange(prpk) %>%
  select(V1, V2, V3)
d

delta <- diff(d[,3])
delta[which(delta==1)+1] <- 1
data.frame(d, delta)

вот результат
Error in data.frame(d, delta) : аргументы подразумевают разные количества строк: 15, 14
вот исходник сокращенный до 15 строк

This post has been edited by Алекс3212: 17.01.2020 14:34

Attached image(s)
Attached Image11.png
11.png — (3.49k)   

Attached Image12.png
12.png — (11.67k)   



Attached File(s)

Download attachment bad.txt
Size:: 2.52k
Number of downloads: 100


User is offline! plantago
Advanced Member



 old post 17.01.2020 15:33     Report Post  Report Post for topic curator       Personal message  Send an e-mail  Web site

А, там наверное забыто, что надо в начало добавить один элемент, потому что diff() всегда будет короче чем тот объект из которого он получен. Например,

> diff(1:3)
[1] 1 1

Добавьте и будет Вам счастье smile.gif

Number of thanks: 1These members thanked the author (1): PS2004R
User is offline! PS2004R
Advanced Member



 old post 17.01.2020 15:45     Report Post  Report Post for topic curator       Photo  Personal message  Send an e-mail  Web site

(plantago @ 17.01.2020 15:33)
Link to the original post  А, там наверное забыто, что надо в начало добавить один элемент, потому что diff() всегда будет короче чем тот объект из которого он получен. Например,

> diff(1:3)
[1] 1 1

Добавьте и будет Вам счастье smile.gif


нет в конец 0 надо конкатенировать и далее как и прежде (данные на 1 кончались в первом примере)

delta <- с(diff(d[,3]), 0)

This post has been edited by PS2004R: 17.01.2020 15:48

Number of thanks: 1These members thanked the author (1): plantago
User is offline! Алекс3212




 old post 17.01.2020 19:57     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(PS2004R @ 17.01.2020 16:45)
Link to the original post  нет в конец 0 надо конкатенировать и далее как и прежде (данные на 1 кончались в первом примере)

delta <- с(diff(d[,3]), 0)


Да, теперь работает, спасибо за помощь!!!!!!!!!!!
User is offline! Алекс3212




 old post 23.01.2020 13:01     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(plantago @ 17.01.2020 16:33)
Link to the original post  А, там наверное забыто, что надо в начало добавить один элемент, потому что diff() всегда будет короче чем тот объект из которого он получен. Например,

> diff(1:3)
[1] 1 1

Добавьте и будет Вам счастье smile.gif


А можно еще как то поменять код, Чтобы он считал количество участков с X 3, которые идут подряд, а не сумму количества повторов на X2.

например когда
1111 2222 2222
1111 2222 2223
1111 2222 1111
1111 2222 1112

код выше посчитает
1111 2222 4

можно ли сделать чтобы было
1111 2222 2
1111 2222 2



И еще вопрос, как сделать замену в строке, например если есть в столбце X2 2222
как заменить это например на цифру 1 или текст loft, по аналогии с эксель "найти-вставить"?
User is offline! PS2004R
Advanced Member



 old post 23.01.2020 13:52     Report Post  Report Post for topic curator       Photo  Personal message  Send an e-mail  Web site

(Алекс3212 @ 23.01.2020 13:01)
Link to the original post  А можно еще как то поменять код, Чтобы он считал количество участков с X 3, которые идут подряд, а не сумму количества  повторов на X2.

например когда
1111    2222    2222
1111    2222    2223
1111    2222    1111
1111    2222    1112

код выше посчитает
1111    2222    4

можно ли сделать чтобы было
1111    2222  2
1111    2222  2
И еще вопрос, как сделать замену в строке, например если есть в столбце X2 2222
как заменить это например на цифру 1 или текст loft, по аналогии с эксель "найти-вставить"?



Это элементарно

CODE


> d <- read.table("data.txt")
> d
   V1   V2   V3
1 1111 2222 2222
2 1111 2222 2223
3 1111 2222 1111
4 1111 2222 1112
> delta <- c(diff(d[,3]), 0)
> delta
[1]     1 -1112     1     0
> s <- which(!(delta == 1))
> s
[1] 2 4
> delta[which(delta==1)+1] <- 1
> delta
[1] 1 1 1 1
> delta[which(!(delta==1))] <- 0
> sec <- rep(1:(length(s)),
+            times=Reduce(function(x1,x2) x2-x1, s,  accumulate=T))
> d <- data.frame(d, delta, sec)
> res <- rle(paste(d[,1], d[,2], d[,4], d[,5]))
> data.frame(do.call(rbind, strsplit(res$values," ")),x=res$lengths)
   X1   X2 X3 X4 x
1 1111 2222  1  1 2
2 1111 2222  1  2 2



Number of thanks: 1These members thanked the author (1): Алекс3212
User is offline! Алекс3212




 old post 23.01.2020 19:53     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(PS2004R @ 23.01.2020 14:52)
Link to the original post  Это элементарно

CODE


> d <- read.table("data.txt")
> d
   V1   V2   V3
1 1111 2222 2222
2 1111 2222 2223
3 1111 2222 1111
4 1111 2222 1112
> delta <- c(diff(d[,3]), 0)
> delta
[1]     1 -1112     1     0
> s <- which(!(delta == 1))
> s
[1] 2 4
> delta[which(delta==1)+1] <- 1
> delta
[1] 1 1 1 1
> delta[which(!(delta==1))] <- 0
> sec <- rep(1:(length(s)),
+            times=Reduce(function(x1,x2) x2-x1, s,  accumulate=T))
> d <- data.frame(d, delta, sec)
> res <- rle(paste(d[,1], d[,2], d[,4], d[,5]))
> data.frame(do.call(rbind, strsplit(res$values," ")),x=res$lengths)
   X1   X2 X3 X4 x
1 1111 2222  1  1 2
2 1111 2222  1  2 2






Error: unexpected '=' in:
"sec <- rep(1:(length(s)),
+            times ="

ошибку пишет вроде..попробовал убрать знак +, выполнилось, но на след шаге тогда ошибка

Error in data.frame(d, delta, sec) : аргументы подразумевают разные количества строк: 16280, 18256353

This post has been edited by Алекс3212: 23.01.2020 19:58
User is offline! PS2004R
Advanced Member



 old post 23.01.2020 21:59     Report Post  Report Post for topic curator       Photo  Personal message  Send an e-mail  Web site

(Алекс3212 @ 23.01.2020 19:53)
Link to the original post  ошибку пишет вроде..попробовал убрать знак +, выполнилось, но на след шаге тогда ошибка

Error in data.frame(d, delta, sec) : аргументы подразумевают разные количества строк: 16280, 18256353


да, тут надо эту строку так поправить:

CODE


sec <- rep(1:(length(s)),  times=c(s[1],diff(s)))



надеюсь теперь всё?

Number of thanks: 1These members thanked the author (1): Алекс3212
User is offline! Алекс3212




 old post 24.01.2020 11:02     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(PS2004R @ 23.01.2020 22:59)
Link to the original post  да, тут надо эту строку так поправить:

CODE


sec <- rep(1:(length(s)),  times=c(s[1],diff(s)))



надеюсь теперь всё?


Да, спасибо, все отлично)!
User is offline! Алекс3212




 old post 24.01.2020 23:46     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(PS2004R @ 23.01.2020 22:59)
Link to the original post  да, тут надо эту строку так поправить:

CODE


sec <- rep(1:(length(s)),  times=c(s[1],diff(s)))



надеюсь теперь всё?


Можете посоветовать литературу, желательно на русском, но и на английском норм, по той теме, что происходит с представленном вами коде, или источник в интернете? Через поиск гугл по поиску "which in r" мало что находит, хочу разобраться что за волшебство происходит в коде, чтобы каждый раз не беспокоить своими вопросами форумчан)
User is offline! PS2004R
Advanced Member



 old post 25.01.2020 00:59     Report Post  Report Post for topic curator       Photo  Personal message  Send an e-mail  Web site

(Алекс3212 @ 24.01.2020 23:46)
Link to the original post  Можете посоветовать литературу, желательно на русском, но и на английском норм, по той теме, что происходит с представленном вами коде, или источник в интернете? Через поиск гугл по поиску "which  in r" мало что находит, хочу разобраться что за волшебство происходит в коде, чтобы каждый раз не беспокоить своими вопросами форумчан)



1.

В R нет "скаляров", есть только "векторы-тензоры". Это налагает определенные обязательства на пишущего код.

На мой взгляд надо повысить ставки и сразу почитать что то вот такое https://www.jsoftware.com/help/jforc/cultur...m#_Toc191734290

Это введение в язык векторных вычислений который (вернее его более древняя версия) до R использовался датааналитиками. Там сразу пример собственно, как ломать мозг от "я умею на любом языке программировать как на фортране" до "я умею в векторные вычисления и мне нужны явно написанные циклы только когда нужен побочный эффект".

Но у R крайне слабые на самом деле возможности "в вектора", и далее нужно посмотреть (возможно несколько раз) видео лекции по SICP (этого полностью достаточно, читать книгу не надо). Дело в том что R это просто еще одна Схема и все что можно программировать в Схеме, можно программировать и в R (даже вектора, это всего навсего DSL написанные поверх схемы по заветам курса SICP).

А совсем начать надо с "Введения в R" которое прямо на CRAN лежит.

2.

В R важно (для успешного "идеоматического" программинга) прочитать-просмотреть те функции что накоплены в {base}. Это позволяет не писать с ноля "велосипеды", поскольку за 30 лет там есть практически все что могло понадобиться сколько нибудь часто.

Найденные "кубики" надо прикинуть как комбинировать друг с другом.

Number of thanks: 1These members thanked the author (1): plantago
User is offline! plantago
Advanced Member



 old post 25.01.2020 09:31     Report Post  Report Post for topic curator       Personal message  Send an e-mail  Web site

Да, самое простое что Вы можете сделать -- открыть помощь по base:: (например, здесь https://stat.ethz.ch/R-manual/R-patched/lib...ml/00Index.html или просто у себя в R) и для каждой команды (ну хорошо, хотя бы для трех четвертей) проделать прилагаемые к ней примеры. Я так делал smile.gif Хорошо бы сделать такое же и с пакетом stat.

Number of thanks: 1These members thanked the author (1): PS2004R
User is offline! d-taras




 old post 10.02.2020 14:58     Report Post  Report Post for topic curator       Personal message  Send an e-mail

Конечная цель построить график "ящик с усами+скрипка" (violin plots).
Как он делается я знаю.
Но у меня данные по каждому периоду наблюдения находятся в отдельной таблице. Заголовок типа
CODE
X,Y, NDVI

Как сформировать дополнительною колонку "month" для таблицы, где в каждой строчке будет стоять название одного и того же месяца? Т.е.
CODE
X,Y, NDVI, month

И как сформировать из всех таблиц общую по двум колонкам? Т.е.
CODE
NDVI, month
          0.2,      4
          n,         4
          0.5,      5
          0.6,      6
User is offline! plantago
Advanced Member



 old post 04.03.2020 07:02     Report Post  Report Post for topic curator       Personal message  Send an e-mail  Web site

Чтобы ответить на Ваш вопрос, нужно увидеть не просто заголовок, но хотя бы часть Ваших данных. И еще нужно понять, откуда должен взяться "month".
Guest
IP-stamp: frLlk1iUohrRs
guest



 old post 10.03.2020 21:21     Report Post  Report Post for topic curator     

Доброго времени суток...Кто нибудь знает библиотеку для R в которой можно работать со словами, например..удалить из предложения на английском определенное слово?
User is offline! plantago
Advanced Member



 old post 11.03.2020 04:10     Report Post  Report Post for topic curator       Personal message  Send an e-mail  Web site

В принципе, Вам сюда: https://cran.r-project.org/web/views/Natura...Processing.html

Но зачем Вам для удаления слова отдельный пакет? Все это можно сделать в базовом R:

> s1 <- "This is a pen"
> s2 <- "This is a cat"
> gsub("^This ", "", s1)
[1] "is a pen"
> gsub("^This ", "", s2)
[1] "is a cat"
a
IP-stamp: frkUc/3HMUCQQ
guest



 old post 12.03.2020 20:30     Report Post  Report Post for topic curator     

(plantago @ 11.03.2020 04:10)
Link to the original post  В принципе, Вам сюда: https://cran.r-project.org/web/views/Natura...Processing.html

Но зачем Вам для удаления слова отдельный пакет? Все это можно сделать в базовом R:

> s1 <- "This is a pen"
> s2 <- "This is a cat"
> gsub("^This ", "", s1)
[1] "is a pen"
> gsub("^This ", "", s2)
[1] "is a cat"


А если другая задача? Есть список слов которые надо оставить, а все остальное удалить, перечислять слова которые удалить надо не выход..какой тогда будет код?)
User is offline! PS2004R
Advanced Member



 old post 12.03.2020 23:06     Report Post  Report Post for topic curator       Photo  Personal message  Send an e-mail  Web site

(a @ 12.03.2020 20:30)
Link to the original post  А если другая задача? Есть список слов которые надо оставить, а все остальное удалить, перечислять слова которые удалить надо не выход..какой тогда будет код?)



ну вот так например,

CODE


> strsplit("один два", " ")[[1]] %in% c("один", "два", "три")
[1] TRUE TRUE



PS

но вам конечно было лень свой пример постить сразу, но вот возражения (и время на их доведения) уверен найдутся smile.gif

Number of thanks: 1These members thanked the author (1): plantago
Guest
IP-stamp: frLlk1iUohrRs
guest



 old post 15.03.2020 18:24     Report Post  Report Post for topic curator     

(PS2004R @ 12.03.2020 23:06)
Link to the original post  ну вот так например,

CODE


> strsplit("один два", " ")[[1]] %in% c("один", "два", "три")
[1] TRUE TRUE



PS

но вам конечно было лень свой пример постить сразу, но вот возражения (и время на их доведения) уверен найдутся smile.gif


Спасибо, нет возражений нет. Я согласен, что пакетом base можно сделать очень многое, только вот одна проблема...если изучаешь r сам и как не профессионал, в условиях когда мануал есть только на английском и только встроенный в help довольно сложно использовать этот пакет и его возможности! Не встречал не одного документа или сайта, где есть методичка/мануал к пакету base на русском... в отличии от других не встроенных пакетов в r. Хотя казалось бы, самый главный и важный пакет, а никто детально не разжевал на русском все возможности) Вот и приходится мне по крайней мере, искать другие пути
User is offline! plantago
Advanced Member



 old post 15.03.2020 18:57     Report Post  Report Post for topic curator       Personal message  Send an e-mail  Web site

Вообще Google Translate хорошо переводит техническую документацию:

https://stat.ethz.ch/R-manual/R-devel/libra...tml/Memory.html

Память R Документация
Память, доступная для хранения данных
Описание
Как R управляет своим рабочим пространством.
Детали
R имеет рабочее пространство переменного размера. Существуют (редко используемые) параметры командной строки для управления ее минимальным размером, но больше нет возможности контролировать максимальный размер.
R поддерживает отдельные области для объектов фиксированного и переменного размера. Первый из них выделяется как массив cons-ячеек...

Number of thanks: 1These members thanked the author (1): PS2004R
User is offline! PS2004R
Advanced Member



 old post 16.03.2020 02:21     Report Post  Report Post for topic curator       Photo  Personal message  Send an e-mail  Web site

(Guest @ 15.03.2020 18:24)
Link to the original post  Хотя казалось бы, самый главный и важный пакет, а никто детально не разжевал на русском все возможности)


Перевод как уже показали способ проблем не составляет.

Что касается использования функций из {base} то ведь и в других языках никто не может "написать как на них собственно программировать". То же "голый синтаксис".

Вот fortran который интегрируется в R.

Нигде ведь явно не написано, что делая рекусрсивный

call mysubr(a, b, c)

надо именно в "а, b, c" заранее положить инкременты значений, а после вызова не забыть возвращаемое значение (пусть это будет "c") положить к накапливаемому результату?

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

В геометриипрограммировании нет королевской дороги. ©

Как с любым языком который изучаешь что бы выражать на нем свои мысли (тут даже больше аналогия с естественным языком smile.gif )

1. Надо прорешать букварь "Введение в R" (подождать пару недель и опять прорешать)

2. Просмотреть {base} и прикинуть где эти кубики можно приткнуть в повседневные задачи

3. Посмотреть лекции SICP про Схему, из которой и получилась текущая реализация R.

Number of thanks: 1These members thanked the author (1): plantago
User is offline! plantago
Advanced Member



 old post 17.03.2020 09:02     Report Post  Report Post for topic curator       Personal message  Send an e-mail  Web site

С другой стороны, есть такая проблема -- мало руководств по языку как таковому и базовым функциям, по типу "голубой книги" (Becker et al. 1986. The new S language). Кстати, она до сих пор актуальна (цитируется почти везде в R help), и отлично читается.

===

О, оказывается она переиздана в CRC Press 2018 году!
User is offline! PS2004R
Advanced Member



 old post 17.03.2020 14:39     Report Post  Report Post for topic curator       Photo  Personal message  Send an e-mail  Web site

(plantago @ 17.03.2020 09:02)
Link to the original post  С другой стороны, есть такая проблема -- мало руководств по языку как таковому и базовым функциям, по типу "голубой книги" (Becker et al. 1986. The new S language). Кстати, она до сих пор актуальна (цитируется почти везде в R help), и отлично читается.

===

О, оказывается она переиздана в CRC Press 2018 году!


Приемы именно программирования хорошо смотреть в вот таких примерах-исследованиях https://www.r-bloggers.com/strategies-to-speedup-r-code/

Number of thanks: 1These members thanked the author (1): plantago
User is offline! plantago
Advanced Member



 old post 18.03.2020 09:00     Report Post  Report Post for topic curator       Personal message  Send an e-mail  Web site

Но все равно замечательно, что голубую книгу переиздали. Это значит, что потребность есть, и большая часть написанного актуальна. Не знаю только, если к этой книге комментарий, какие функции S доступны в R, а какие нет (а также почему и как это компенсировать).
User is offline! Алекс3212




 old post 11.04.2020 19:11     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(PS2004R @ 23.01.2020 14:52)
Link to the original post  Это элементарно

CODE

> d <- read.table("data.txt")
> d
   V1   V2   V3
1 1111 2222 2222
2 1111 2222 2223
3 1111 2222 1111
4 1111 2222 1112
> delta <- c(diff(d[,3]), 0)
> delta
[1]     1 -1112     1     0
> s <- which(!(delta == 1))
> s
[1] 2 4
> delta[which(delta==1)+1] <- 1
> delta
[1] 1 1 1 1
> delta[which(!(delta==1))] <- 0
> sec <- rep(1:(length(s)),
+            times=Reduce(function(x1,x2) x2-x1, s,  accumulate=T))
> d <- data.frame(d, delta, sec)
> res <- rle(paste(d[,1], d[,2], d[,4], d[,5]))
> data.frame(do.call(rbind, strsplit(res$values," ")),x=res$lengths)
   X1   X2 X3 X4 x
1 1111 2222  1  1 2
2 1111 2222  1  2 2



Добрый вечер, я снова к вам за советом... подскажите какие команды использовать, чтобы в этой замечательной таблице, что вы подсказали мне как сделать, добавить еще 2 столбца, а именно минимально и максимальное значение чтобы в итоге получилось вот так:

   X1   X2 X3 X4 x min max
1 1111 2222  1  1 2 1045 1047
2 1111 2222  1  2 2

Понадобилось посчитать разницу в интервалах времени, а не зная точный интервал сложно это сделать корректно будет, время уже получилось посчитать с помощью lubrydate пакета ...ниже код, но вы его увидели естественно.


d <- read.table("F:/YN_3D-files/MiscFiles/badchan.asc") %>%
     mutate(prpk = (V1*10000+V2)*10000+V3) %>%
       arrange(prpk) %>%
         select(V1, V2, V3)
d

delta <- c(diff(d[,3]), 0)
delta[which(delta==1)+1] <- 1
data.frame(d, delta)

delta[which(!(delta==1))] <- 0
data.frame(d, delta)

d <- data.frame(d, delta)

res <- rle(paste(d[,1], d[,2], d[,4]))
FFF <- data.frame(do.call(rbind, strsplit(res$values," ")),x=res$lengths)



получается вот такой результат (красным нарисовал то что хотелось бы видеть еще)
не получается картинку прикрепить что то, вот ссылка

http://prntscr.com/rxdjq8

This post has been edited by plantago: 12.04.2020 09:44
User is offline! plantago
Advanced Member



 old post 13.04.2020 19:09     Report Post  Report Post for topic curator       Personal message  Send an e-mail  Web site

Ну вот я аккуратно Ваш пост дооформил, но, честно сказать, так и не понял, что же Вы хотите. Откуда взялись цифры 1045 и 1047, совершенно непонятно. Может быть, конечно, кто-то поймет, но я сдаюсь. smile.gif
User is offline! Алекс3212




 old post 15.04.2020 00:52     Report Post  Report Post for topic curator       Personal message  Send an e-mail

(plantago @ 13.04.2020 20:09)
Link to the original post  Ну вот я аккуратно Ваш пост дооформил, но, честно сказать, так и не понял, что же Вы хотите. Откуда взялись цифры 1045 и 1047, совершенно непонятно. Может быть, конечно, кто-то поймет, но я сдаюсь. smile.gif


Да я и сам написал, а потом уже понял, что сам бы не понял, что нужно на месте другого человека....извиняюсь.
исходный файл вот такой
> d <- read.table("data.txt")
> d
V1 V2 V3
1 1111 2222 2222
2 1111 2222 2223
3 1111 2222 1111
4 1111 2222 1112
Те значения что нужны min и max содержатся в V3, проблема (для меня пока что), в том, что этот столбец удаляется (оно и ясно иначе не выйдет) для получения файла такого вида
X1 X2 X3 X4 x
1 1111 2222 1 1 2
2 1111 2222 1 2 2
Если на реальном примере и используя код который в моем сообщении был то исходник такой
V1
<int>
V2
<int>
V3
<int>
delta
<dbl>
170509 5337 1545 1
170509 5337 1546 1
170509 5337 1547 1
170509 5337 1548 1
170509 5337 1549 1

Отлично считается количество файлов, которые идут подряд, но V3 столбец исчезает, а именно там содержатся файлы, которые нужны теперь(( min и max значение. И получается фрейм такого вида
X1
<fctr>
X2
<fctr>
X3
<fctr>
x
<int>
170509 5337 1 160
170509 5385 0 1
170509 5401 1 5

А нужно, чтобы был примерно следующий

170509 5337 1 160 1545 1705
170509 5385 0 1 5385 5385
170509 5401 1 5 5401 5406
т.е. последние 2 столбца это значения минимум и максимум того что суммируется...пока не придумал, как сделать то что нужно мне, но в голове представляется пока прям огромный путь с манипуляцией данными, т.к. придется это делать с использованием каких то пакетов и использовать какие то ухищрения, кажется мне, что с помощью base пакета можно сделать все в пару строчек, но я его плохо знаю, от чего и такой вопрос)) обещаю выложить код с садомазо ухищрениями как придумаю, но не уверен что кому то нужен будет он, повторюсь, мне кажется там будет пару десятков строк. Поэтому буду рад за любую инфу, пусть не готовый код а просто куда копать))

*





Name:

 Enable Smilies · Show Smilies Pop Up Window
Icons designation:

   Say THANKS to the author — say THANKS to the author
   Delete Post — delete
   Edit Post — edit
   Put in the news column — put in the news column
   Quote Post — quote the post
   multiquote  not included/multiquote included — quote several posts
   Report SPAM — mark spam message
   Report Post — report post to the moderator
   User is online!/User is offline! — author online/offline
   Photo — photo of the author

   - other designations -
 
   *
« Next Oldest · Biophysics and math-methods in biology · Next Newest »
pages (55): « < 51 52 53 54 55 >
Fast ReplyReply to this topicStart new topic

Rambler   molbiol.ru - методы, информация и программы для молекулярных биологов              

 ·  Викимарт - все интернет-магазины в одном месте  ·  Доска объявлений Board.com.ua  · 
--- сервер арендован в компании Hetzner Online, Германия ---
--- администрирование сервера: Intervipnet ---

Helicon · Dia-m · InterLabService · Beckman Coulter · SkyGen · OPTEC · BIOCAD · Evrogen · Syntol · Bioline · Sartorius · Khimexpert · SibEnzyme · Tecan · Danies · NPP «TRIS» · Bialexa · FizLabPribor · Genotek · ATG Service Gene · Biogen-Analitika
Your forum  ·  editor@zbio.net  ·  Time is now: 28.03.24 18:45
Bridged By IpbWiki: Integration Of Invision Power Board and MediaWiki © GlobalSoft