Molbiol.ru | О проекте | Справочник | Методы | Растворы | Расчёты | Литература | Орг.вопросы Web | Фирмы | Coffee break | Картинки | Работы и услуги | Биржа труда | Zbio-wiki NG SEQUENCING · ЖИЗНЬ РАСТЕНИЙ · БИОХИМИЯ · ГОРОДСКИЕ КОМАРЫ · А.А.ЛЮБИЩЕВ · ЗООМУЗЕЙ Темы за 24 часа [ Вход* | Регистрация* ] Форум: | |
ПолинаШ Участник |
вокруг <- или = в операции присваивания за запятой при перечислениях вокруг ~ в формуле вокруг арифметических или логических символов в выражениях за именем функции перед скобкой ... Где-то это писалось, но не могу вспомнить |
plantago Постоянный участник |
|
Алекс3212 |
1431 7777 1431 1431 , нужно чтобы осталось только 1431 одна строка. |
d-taras |
В русскоязычном сегменте не нашел примеры чтения либровских таблиц в R. Может кому будет нужно. 1. Устанавливаем библиотеку readODS 2. library(readODS) 3. Читаем нужный лист в таблице tab2 <- read_ods("/home/username/work/Yandex.Disk/Ки_измер/измерения_05/R_Ph.ods", sheet = 5) Как видно понимает русские имена в пути файла и в названии листа т.к. задается порядковый номер листа, а так же запятую в качестве десятичного знака.
|
plantago Постоянный участник |
(Алекс3212 @ 06.09.2018 11:29) Добрый всем вечер! Помогите, пожалуйста, кому не сложно, решить мою проблемку в R. Я не знаю r совсем, но есть желание научиться, но есть необходимость в таблице, которую я импортирую в r, оставить только повторяющиеся строки. Т.е. есть строки в столбце с повторениями, таких повторений может быть по 10 штук в 1 таблице. Как сделать так, чтобы в таблице остались только повторяющиеся строки? Например есть строки 1431 7777 1431 1431 , нужно чтобы осталось только 1431 одна строка. Так годится? CODE > xx
xx 1 1431 2 7777 3 1431 4 1431 > duplicated(xx) [1] FALSE FALSE TRUE TRUE > unique(xx[duplicated(xx),]) [1] 1431 |
Алекс3212 |
(plantago @ 06.09.2018 20:29) Так годится? CODE > xx xx 1 1431 2 7777 3 1431 4 1431 > duplicated(xx) [1] FALSE FALSE TRUE TRUE > unique(xx[duplicated(xx),]) [1] 1431 Я очень извиняюсь, я только начал осваивать R и еще мало знаю, я думаю, что то что вы написали сработает именно как нужно мне, но не могу этим корректно воспользоваться. Вы не могли бы от и до весь код выложить, т.к. мне не понятно что значат xx символы. Спасибо |
plantago Постоянный участник |
xx <- data.frame(xx=c(1431, 7777, 1431, 1431)) и все должно заработать. |
Алекс3212 |
|
Алекс3212 |
Может как то хх <- data.table .... |
plantago Постоянный участник |
|
Алекс3212 |
(plantago @ 08.09.2018 10:12) Все сработало как надо, большое спасибо вам!!! Еще один вопрос, не могу сохранить теперь полученный результат обратно в Excel, вроде и пакет установил и загрузил, все равно, подскажите, что я делаю не так? Ниже весь код > library(readxl) # загрузка пакета > data2=read_excel("123.xlsx") > data2 # A tibble: 6 x 1 `1477` <dbl> 1 1111 2 1568 3 1111 4 8520 5 8520 6 9820 > data3 <- data.frame(data2) > data3 X1477 1 1111 2 1568 3 1111 4 8520 5 8520 6 9820 > duplicated(data3) [1] FALSE FALSE TRUE FALSE TRUE FALSE > unique(data3[duplicated(data3),]) [1] 1111 8520 > write.xlsx(data3, "D:/R/mydata.xlsx") Error in write.xlsx(data3, "D:/R/mydata.xlsx") : could not find function "write.xlsx" > install.packages("writexl") trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.5/writexl_1.0.zip' Content type 'application/zip' length 283286 bytes (276 KB) downloaded 276 KB package ‘writexl’ successfully unpacked and MD5 sums checked The downloaded binary packages are in C:\Users\...\AppData\Local\Temp\Rtmp..\downloaded_packages > library(writexl) > write.xlsx(data3, "D:/R/mydata.xlsx") Error in write.xlsx(data3, "D:/R/mydata.xlsx") : could not find function "write.xlsx" |
plantago Постоянный участник |
|
Алекс3212 |
(plantago @ 08.09.2018 19:23) Да, я невнимателен был, но после введенной команды сохранился исходный фаил с теми же данными, которые я загружал. Как сделать так, чтобы записались в фаил, только дублированные значения? Я логически понимаю, что сохраняю data3, который я не изменял, а просто вывел дубликаты на монитор пк |
plantago Постоянный участник |
write_xlsx(data4, "D:/R/data4.xlsx") |
Алекс3212 |
(plantago @ 09.09.2018 07:13) Спасибо, читаю книгу параллельно R в действии, там по одному примеру так и есть, получается любой результат можно записать в новый фаил именно как вы показали. И последний наверно вопрос по этой теме, как сделать все тоже самое, если в таблице есть 3 столбца, а фильтрацию данных нужно сделать только на основе инф. из 1 столбца, при этом чтобы 2 и 3 столбец повторяющихся строк 1 столбца тоже остались, а не повторяющиеся удалились вместе с значениями из тех же 2 и 3 столбцов? |
plantago Постоянный участник |
> aa <- data.frame(xx=c(1431, 7777, 1431, 1431), yy=1:4, zz=letters[1:4]) > aa xx yy zz 1 1431 1 a 2 7777 2 b 3 1431 3 c 4 1431 4 d > aa2 <- aa[duplicated(aa[, 1]),] > aa2 xx yy zz 3 1431 3 c 4 1431 4 d > aa3 <- aa2[!duplicated(aa2[, 1]), ] > aa3 xx yy zz 3 1431 3 c |
Guest IP-штамп: frDrbtCF3H/fc гость |
Задание нечетко определено. Должны остаться все строки с повторяющимися элементами столбца 1 или только одна на каждый повторяющисся элемент 1-го столбца? Если все, то, наверное, нужно так: CODE aa[aa$xx %in% unique(aa$xx[duplicated(aa$xx)]),]
|
guest: Алексей IP-штамп: fr5VFZv2pvLGE гость |
|
plantago Постоянный участник |
|
guest: Алексей IP-штамп: fr5VFZv2pvLGE гость |
|
PS2004R Постоянный участник |
(guest: Алексей @ 10.10.2018 09:27) Ну вот ответ в атаче, но чем это Вам в таком варианте общения поможет? PS шкала трансформации исходного ряда естественно логарифмическая PPS ну и тут "аналитический" доверительный интервал, естественно перевыборками будет пошире (но с другой стороны недельный ритм уйдет и с практической точки зрения это похуже будет) Сообщение было отредактировано PS2004R - 10.10.2018 16:35 Картинки: _________________2018_10_10_10_30_14.png — (180.18к)
|
gosushade |
|
PS2004R Постоянный участник |
(gosushade @ 11.10.2018 09:37) Это очень простой анализ, его технически способен сделать любой новичек в R. Жаль что Вы не хотите попытаться воспроизвести решение самостоятельно. Может все таки попробуете? Все самое главное я сказал -- Ваши данные напоминают какое то учебно задание, дан годовой интервал (это учебный год судя по всему) + один дополнительный месяц следующего (учебного года). Скорее всего это скачивание каких то рефератов учащимися из обменника. Записываете файл екселя в формат csv, и читаете в R с помощью read.csv2() с параметром сохраняющим строковые значения без перекодировки в факторы. Логарифмируете число посещений (log), преобразуете столбец данных в формат календарной даты (as.Data()). Без этого глазами зависимость и не увидишь толком Используется для собственно анализа пакет library(prophet) . Там один только параметр кастомный указать --- "использовать годовой патерн в модели".
|
gosushade |
library(prophet) df<-read.csv2("views.csv") dfl<-log(df[,1]) dft<-as.Date(df[,2]) df[,1]<-dfl df[,2]<-dft m <- prophet(df, growth = "logistic") future <- make_future_dataframe(m, periods = 30) forecast <- predict(m, future) plot(m, forecast) |
PS2004R Постоянный участник |
(gosushade @ 12.10.2018 11:11) Спасибо Вам за помощь. Попробовал реализовать по вашим комментариям, получилось не совсем как у Вас. Повторюсь, к сожалению, R я совсем не знаю.. library(prophet) df<-read.csv2("views.csv") dfl<-log(df[,1]) dft<-as.Date(df[,2]) df[,1]<-dfl df[,2]<-dft m <- prophet(df, growth = "logistic") future <- make_future_dataframe(m, periods = 30) forecast <- predict(m, future) plot(m, forecast) если не вдаваться в доверительные интервалы сразу, то можно начать с такого m <- prophet(df.data.prophet, yearly.seasonality=T, seasonality.mode="multiplicative") для логистического тренда надо настраивать лимиты, это в документации написано на пакет Сообщение было отредактировано PS2004R - 12.10.2018 13:55 |
gosushade |
|
garryhang |
столкнулся со сложностью в форматировании таблицы: исходная выглядит вот так: id role playerid name 10000bc.htm Director rolandemmerich.htm Roland Emmerich 10000bc.htm Writer rolandemmerich.htm Roland Emmerich 10000bc.htm Actor haraldkloser.htm Harald Kloser требуется создать новый dataframe такого вида: id director writer actor etc.... xx 1 0 5 пытался с помощью команды table но все в "сухую" буду рад помощи |
PS2004R Постоянный участник |
(garryhang @ 20.10.2018 22:52) Всем привет. столкнулся со сложностью в форматировании таблицы: исходная выглядит вот так: id role playerid name 10000bc.htm Director rolandemmerich.htm Roland Emmerich 10000bc.htm Writer rolandemmerich.htm Roland Emmerich 10000bc.htm Actor haraldkloser.htm Harald Kloser требуется создать новый dataframe такого вида: id director writer actor etc.... xx 1 0 5 пытался с помощью команды table но все в "сухую" буду рад помощи как то совсем уж непонятно |
bf109xxl Участник |
Существуют ли готовые решения для расчета углового распределения величины по XY-матрице? Каждое значение матрицы есть среднее по квадрату с заданной стороной, контур ненулевых элементов - окружность, равноудаленная от краев. Сторона квадрата такова, что при требуемом угловом разрешении в большинстве случаев лишь часть квадрата пересекается со сканирующим сектором. Для подсчета значения вклада данного квадрата в заданном угле требуется определить площадь пересечения. Безусловно, это теоретически несложно, но реализация выглядит громоздкой - банально жалко времени на все эти выкрутасы. Можно, конечно, проинтерполировать значения, уменьшить сторону квадрата и тупо суммировать квадраты, центр которых внутри сканирующего сектора, но это как-то неспортивно и неэстетично. Можно вращать сам растр, пересчитывая вклады квадратов с использованием предопределенного массива весов (площадей пересечения со сканирующим сектором, он будет одинаковым), но, подозреваю, выч.затраты тоже будут аховые. Вращение растра осуществлял через соответствующие функции для растровых изображений - конвертил матрицу в изображение, вращал изображение на произвольный угол, а потом восстанавливал значения матрицы, "подчищая" края контура. Гуглением готового решения не нашел. Безрезультатно просмотрел мануал {circular}. Возможно, я использовал не самый правильный набор ключевых слов. Буду признателен, ежли кто присоветует что-нибудь дельное. Конечно, решение на основе R было бы наиболее предпочтительным. |
PS2004R Постоянный участник |
(bf109xxl @ 07.11.2018 14:48) Вопрос по подготовке данных для направленной (directional) статистики. Существуют ли готовые решения для расчета углового распределения величины по XY-матрице? Каждое значение матрицы есть среднее по квадрату с заданной стороной, контур ненулевых элементов - окружность, равноудаленная от краев. Сторона квадрата такова, что при требуемом угловом разрешении в большинстве случаев лишь часть квадрата пересекается со сканирующим сектором. Для подсчета значения вклада данного квадрата в заданном угле требуется определить площадь пересечения. Безусловно, это теоретически несложно, но реализация выглядит громоздкой - банально жалко времени на все эти выкрутасы. Можно, конечно, проинтерполировать значения, уменьшить сторону квадрата и тупо суммировать квадраты, центр которых внутри сканирующего сектора, но это как-то неспортивно и неэстетично. Можно вращать сам растр, пересчитывая вклады квадратов с использованием предопределенного массива весов (площадей пересечения со сканирующим сектором, он будет одинаковым), но, подозреваю, выч.затраты тоже будут аховые. Вращение растра осуществлял через соответствующие функции для растровых изображений - конвертил матрицу в изображение, вращал изображение на произвольный угол, а потом восстанавливал значения матрицы, "подчищая" края контура. Гуглением готового решения не нашел. Безрезультатно просмотрел мануал {circular}. Возможно, я использовал не самый правильный набор ключевых слов. Буду признателен, ежли кто присоветует что-нибудь дельное. Конечно, решение на основе R было бы наиболее предпочтительным. Это по описанию алгоритма больше геостатистика. Соответствующий раздел spatial смотреть, но вот склероз не помню там новый пакет который все эти пересечения считает |
bf109xxl Участник |
|
PS2004R Постоянный участник |
(bf109xxl @ 07.11.2018 15:47) Это уже геостатистика (хотя наверное можно попытаться и на этом уровне попытаться найти подходящую функцию, но это очень большой труд получается) Я имел в виду базовое представление всех этих секторов и их пересечений. Там какой то переход на новую библиотеку наметился, но вылетело из головы название (блин даже ставил же себе на работе посмотреть ). Но все эти пересечения там точно есть, весьма просто представленные. |
bf109xxl Участник |
(PS2004R @ 07.11.2018 15:01) Я имел в виду базовое представление всех этих секторов и их пересечений. ... Но все эти пересечения там точно есть, весьма просто представленные. Мне пока не попадалось нигде. Но буду чертовски признателен за название. Хотелось бы избежать изобретательства велосипедов. |
PS2004R Постоянный участник |
(bf109xxl @ 07.11.2018 16:44) Мне пока не попадалось нигде. Но буду чертовски признателен за название. Хотелось бы избежать изобретательства велосипедов. Вот описания разной степени детализации |
bf109xxl Участник |
(PS2004R @ 07.11.2018 16:11) Спасибо, но, как мне кажется, это слишком слабо пересекается с задачей. Поразмыслив, решил, что можно избежать громоздких вычислений, посчитав матрицы площадей пересечения для каждого значения угла лишь в одном полуквадранте, а дальше использовать симметрию и "пробегать" лишь затрагиваемые квадраты при суммировании. Неизящно, но доступно моему пониманию и менее громоздко, чем представлялось вначале. Тем не менее, я буду признателен за любые полезные советы касательно данной задачи - допускаю существование более подходящего решения. |
bf109xxl Участник |
CODE if (!interactive()) { cat("Press Enter to continue...") invisible(readLines(con = "stdin", n = 1)) } R ver.3.5.1, на десктопе с Win10 код работает, а вот на ноуте с Win7 - нет. В чем может быть причина? Буду признателен за подсказку. |
plantago Постоянный участник |
А предположить могу то, что дело в настройках винды. |
Ulvhare |
Довожу до ума методику измерения целлюлазной активности в пробах из кишечника мелких млеков. Пробы экстрагируются в глицерине или буфере, затем (с разбавлением) инкубируются в присутствии Текущая задача - оценить влияние экстрагента и концентрации химуса в измерительной кювете. Слишком мало химуса - банально мало фермента, много - гасится флуоресценция. Получается примерно такая табличка: CODE # A tibble: 38 x 4 sample type C_chym cbha <chr> <fct> <dbl> <dbl> 1 25 глицерин 0.005 0.000227 2 26 глицерин 0.005 0.000151 3 27 глицерин 0.005 0.0000749 4 28 глицерин 0.005 0.000150 5 29 глицерин 0.005 0.000149 6 30 глицерин 0.005 0.0000746 7 32 глицерин 0.005 0.000108 8 33 глицерин 0.005 0.0000524 9 34 глицерин 0.005 0.000164 10 35 буфер 0.005 0.0000599 # ... with 28 more rows sample - номер пробирки C_chym - концентрация химуса (0.005, 0.01, 0.015) в кювете cbha - целлобиогидролазная активность Предполагаю использовать ANOVA/Kruskal-Wallis (в зависиомости от тестов на нормальность) для проверки влияния экстрагента и Спирменовскую корреляцию для проверки влияния концентрации. Но не понимаю, как учитывать повторности. Все пробы взяты из слепой кишки одного и того же зверя (здесь - домашний кролик), 10 пробирок - в глицерин, 10 - в буфер. Из каждой пробирки по 3 разведения. Т.е., выборки получаются зависимыми, и как-то надо это учесть? Разбросы значений cbha велики, т.к. целлюлазы не плавают в растворе, а сидят эдакими тяжами на микросимбионтах кишечника, которые в свою очередь сидят на частичках химуса, и сколько этих частичек попало в пробирку - случайный процесс. Но усреднённо метод работает (мне важно, сколько целлюлозы на зверя гидролизуется, точнее, сколько целлобиозы образуется). Вопрос - как обрабатывать повторности? Какие ещё методы посоветуете? |
PS2004R Постоянный участник |
(Ulvhare @ 13.12.2018 18:16) Здравствуйте! Довожу до ума методику измерения целлюлазной активности в пробах из кишечника мелких млеков. Пробы экстрагируются в глицерине или буфере, затем (с разбавлением) инкубируются в присутствии Текущая задача - оценить влияние экстрагента и концентрации химуса в измерительной кювете. Слишком мало химуса - банально мало фермента, много - гасится флуоресценция. Получается примерно такая табличка: CODE # A tibble: 38 x 4 sample type C_chym cbha <chr> <fct> <dbl> <dbl> 1 25 глицерин 0.005 0.000227 2 26 глицерин 0.005 0.000151 3 27 глицерин 0.005 0.0000749 4 28 глицерин 0.005 0.000150 5 29 глицерин 0.005 0.000149 6 30 глицерин 0.005 0.0000746 7 32 глицерин 0.005 0.000108 8 33 глицерин 0.005 0.0000524 9 34 глицерин 0.005 0.000164 10 35 буфер 0.005 0.0000599 # ... with 28 more rows sample - номер пробирки C_chym - концентрация химуса (0.005, 0.01, 0.015) в кювете cbha - целлобиогидролазная активность Предполагаю использовать ANOVA/Kruskal-Wallis (в зависиомости от тестов на нормальность) для проверки влияния экстрагента и Спирменовскую корреляцию для проверки влияния концентрации. Но не понимаю, как учитывать повторности. Все пробы взяты из слепой кишки одного и того же зверя (здесь - домашний кролик), 10 пробирок - в глицерин, 10 - в буфер. Из каждой пробирки по 3 разведения. Т.е., выборки получаются зависимыми, и как-то надо это учесть? Разбросы значений cbha велики, т.к. целлюлазы не плавают в растворе, а сидят эдакими тяжами на микросимбионтах кишечника, которые в свою очередь сидят на частичках химуса, и сколько этих частичек попало в пробирку - случайный процесс. Но усреднённо метод работает (мне важно, сколько целлюлозы на зверя гидролизуется, точнее, сколько целлобиозы образуется). Вопрос - как обрабатывать повторности? Какие ещё методы посоветуете? Это больше напоминает управляемый эксперимент, а не дисперсионный анализ. Имеем функцию от нескольких аргументов, требуется восстановить градиент (ну и сами значения до кучи).
|
Ulvhare |
(PS2004R @ 13.12.2018 22:50) Это больше напоминает управляемый эксперимент, а не дисперсионный анализ. Имеем функцию от нескольких аргументов, требуется восстановить градиент (ну и сами значения до кучи). Спасибо за отклик, но непонятно, что вы имеете в виду. Объясните подробнее, если не затруднит, или ссылочку какую. Пока гугл на "r repetitions" мне ничего хорошего не выдал, а "repeated measures" и "replications" трактуются им совсем в другом контексте. |
PS2004R Постоянный участник |
(Ulvhare @ 14.12.2018 20:24) Спасибо за отклик, но непонятно, что вы имеете в виду. Объясните подробнее, если не затруднит, или ссылочку какую. Пока гугл на "r repetitions" мне ничего хорошего не выдал, а "repeated measures" и "replications" трактуются им совсем в другом контексте. При чем тут дисперсионный анализ? Результаты проведенного эксперимента по факторизированному плану можно и глазами посмотреть. У вас есть план эксперимента изучающий зависимость целевого показателя от входных параметров, значит есть и "поверхность отклика". Эту поверхность отклика можно построить и посмотреть. ну и вообще в разделе
|
Den-N Постоянный участник |
(Ulvhare @ 13.12.2018 21:16) Вопрос не имеет прямого отношения к R. Лучше создать отдельную ветку, определиться с методом анализа, а уже потом, возможно, сюда. Отвечу в другую ветку. Фрагмент данных тоже нужен в формате, чтобы их можно было обсчитать, а не только понять структуру - чтобы обсуждать анализ с конкретными, а не абстрактными цифрами. Сообщение было отредактировано Den-N - 15.12.2018 15:49
|
Ulvhare |
|
Алекс3212 |
Изучаю R, но наткнулся на одну проблему (для меня) и не могу без сторонней помощи понять как решить ее, на форумах толком не описано из тех, что я читал в книгах тоже. Задача: Сделать гистограмму производительности по дням (как в Excel обычно делают), сделать заливку цветом по условию из другого столбца. 3 условия, был дождь, был, ветер и хорошая погода. Нужно это, чтобы нагляднее показать снижение производительности в дни неблагоприятной погоды. Есть 3 столбца, 1 дата в формате день, месяц, год. 2 столбец условие, т.е. дождь, ветер или хорошая погода 3 столбец сама производительность. Вроде организовано все правильно в самом файле Excel, каждая строка это отдельный день, который имеет признак по погоде и значение производительности в разных столбцах. Но, вот что получается у меня и я явно, что то не доделываю. library("ggplot2") library(readxl) Weather.1 <- read_xlsx("weather.xlsx") ggplot(data = Weather.1, aes(x = Prod., group = Weath., fill = Weath.))+geom_histogram() или вот так аналогично получается qplot(Weather.1$Prod., col=as.factor(Weather.1$Weath.), fill=Weather.1$Weath., color=Weather.1$Weath., bins=30) Большая благодарность всем, кто подскажет, т.к. я кажется в тупик пока попал Картинки: Screenshot_11.png — (24.4к) |
plantago Постоянный участник |
Но, наверное, Вам нужен просто barplot(). |
bf109xxl Участник |
CODE ggplot(Weather.1,
aes(x = <Date column name>, y = Prod, fill = Weath)) + geom_bar(stat = "identity")
|
plantago Постоянный участник |
Кстати, "отцы" R, как я вижу, очень настороженно относятся и к ggplot, и ко всем вообще tidyverse извращениям (как, скажем, к Haskel-подобному magrittr). Такие люди как Wickham показывают, насколько уязвим свободный софт в руках энергичных, творческих, но абсолютно упертых людей. Другой такой пример (похуже) -- Poettering с systemd. Трагедии никакой не происходит, просто обидно, что люди учатся не базовому R, который, на мой вкус, замечательный интеллектуальный продукт, а чему-то непонятному. Как tibble, где убраны row.names потому что они просто не нравятся Wickham. |
bf109xxl Участник |
Я это все к тому, что даже если ggplot и извращение, то в очень многих случаях это полезное и нужное извращение. И я этим извращением не страдаю, но даже слегка наслаждаюсь. "Пусть расцветают сто цветов, пусть соперничают сто школ." (с) Великий Кормчий
|
plantago Постоянный участник |
|
plantago Постоянный участник |
=== Я знаю, что нужно сделать. Надо написать пакет типа "ggplotminus" который будет грузить из-под себя ggplot2, но убирать при этом все, несовместимое с принципами Cleveland!
|
« Предыдущая тема · Биофизика и матметоды в биологии · Следующая тема » |