<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Математик среди биологов: заметки с тегом data.table</title>
<link>https://antonlyakh.ru/blog/tags/data-table/</link>
<description>Я немного умею складывать, но от вычитания у меня всегда кружится голова</description>
<author>Антон Лях</author>
<language>ru</language>
<generator>E2 (v3559; Aegea)</generator>

<itunes:owner>
<itunes:name>Антон Лях</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Я немного умею складывать, но от вычитания у меня всегда кружится голова</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Rесурсы. Выбрать строки с одинаковыми индексами из data.table</title>
<guid isPermaLink="false">495</guid>
<link>https://antonlyakh.ru/blog/all/vybiraem-v-r-stroki-s-odinakovymi-indeksami-iz-data-table/</link>
<pubDate>Fri, 21 Jun 2024 16:34:01 +0300</pubDate>
<author>Антон Лях</author>
<comments>https://antonlyakh.ru/blog/all/vybiraem-v-r-stroki-s-odinakovymi-indeksami-iz-data-table/</comments>
<description>
&lt;p class="foot"&gt;Это техническая заметка-напоминалка о некоторых возможностях пакета data.table.&lt;/p&gt;
&lt;h4&gt;Задача&lt;/h4&gt;
&lt;p&gt;Есть несколько таблиц data.table с данными. Назовем их dt_meta, dt_x, dt_y, dt_area.&lt;/p&gt;
&lt;p&gt;В каждой таблице есть колонка the_index.&lt;/p&gt;
&lt;p&gt;Из таблицы dt_meta выбираю строки, удовлетворяющие критерию. Например, все строки, в которых значение the_length &gt; 120:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;dt_meta[the_length &amp;gt; 120]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Задача заключается в том, чтобы из остальных таблиц выбрать строки с теми же номерами.&lt;/p&gt;
&lt;h4&gt;Решение&lt;/h4&gt;
&lt;p&gt;Использую специальный символ &lt;kbd&gt;&lt;a href="https://jangorecki.gitlab.io/data.cube/library/data.table/html/special-symbols.html"&gt;.I&lt;/a&gt;&lt;/kbd&gt;&lt;/p&gt;
&lt;p&gt;&lt;kbd&gt;.I&lt;/kbd&gt; возвращает номера строк. Но у него есть &lt;a href="https://stackoverflow.com/questions/23585999/understanding-i-in-data-table-in-r"&gt;особенности&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Код&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;dt_meta[the_length &amp;gt; 120, .I]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;вернет последовательные номера строк в новой таблице: 1, 2, 3, ....&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Код&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;dt_meta[, .I[the_length &amp;gt; 120]]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;вернет номера строк в исходной таблице: 5, 9, 13, 63, ....&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Для решения нужен второй вариант кода. Вот решение.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# Номера строк исходной таблицы, в которых the_length &amp;gt; 120
indexes &amp;lt;- dt_meta[, .I[the_length &amp;gt; 120]]
# Выбираю такие же строки из других таблиц
new_x &amp;lt;- dt_x[indexes]
new_y &amp;lt;- dt_y[indexes]
new_area &amp;lt;- dt_area[indexes]&lt;/code&gt;&lt;/pre&gt;</description>
</item>


</channel>
</rss>