<img src=http://cognitiveclass.ai/wp-content/uploads/2017/11/cc-logo-square.png width = 150><h1 align=center><font size = 5>LISTS and DATAFRAMES in R | СПИСКИ і ФРЕЙМИ ДАНИХ</font></h1> 
## Table of Contents | Зміст<div class="alert alert-block alert-info" style="margin-top: 20px"><li><a href="#ref0">About the Dataset | Про базу даних</a></li><li><a href="#ref1">Lists | Списки</a></li><li><a href="#ref2">Data frames | Фрейми даних</a></li><br><p></p>Estimated Time Needed: <strong>15 min</strong> | Необхідний час: <strong>15 хв</strong></div><hr><a id="ref0"></a><center><h2>About the Dataset | Про базу даних</h2></center>Imagine you got many movie recomendations from your friends and compiled all of the recomendations in a table, with specific info about each movie.The table has one row for each movie and several columns---Уявіть, що у вас є багато рекомендацій фільмів від ваших друзів і зібрані вони в таблиці з конкретною інформацією про кожен фільм.У цій таблиці одному рядкові відповідає один фільм а також кілька колонок.- **name** - The name of the movie | Назва фільму- **year** - The year the movie was released | Рік релізу фільму- **length_min** - The lenght of the movie in minutes | Тривалість фільму (хвилини)- **genre** - The genre of the movie | Жанр фільму- **average_rating** - Average rating on Imdb | Середній рейтинг на сайті IMDB- **cost_millions** - The movie's production cost in millions | Вартість фільму (млн доларів США)- **sequences** - The amount of sequences | Кількість частин- **foreign** - Indicative of whether the movie is foreign (1) or domestic (0) | Фільм є зарубіжним (1) чи вітчизняним (0)?- **age_restriction** - The age restriction for the movie | Вікові обмеження для перегляду фільму<br>Part of the dataset can be seen below---Ви можете побачити частину бази даних нижче<img src = "https://ibm.box.com/shared/static/6kr8sg0n6pc40zd1xn6hjhtvy3k7cmeq.png", align = "center">Imagine you got many movie recomendations from your friends and compiled all of the recomendations in a table, with specific info about each movie.
The table has one row for each movie and several columns
Уявіть, що у вас є багато рекомендацій фільмів від ваших друзів і зібрані вони в таблиці з конкретною інформацією про кожен фільм.
У цій таблиці одному рядкові відповідає один фільм а також кілька колонок.
Part of the dataset can be seen below
Ви можете побачити частину бази даних нижче

<hr><a id="ref1"></a><center><h2>Lists | Списки</h2></center>First of all, we're gonna take a look at lists in R. A list is a sequenced collection of different objects of R, like vectors, numbers, characters, other lists as well, and so on. You can consider a list as a container of correlated information, well structured and easy to read. A list accepts items of different types, but a vector (or a matrix, which is a multidimensional vector) doesn't. To create a list just type __list()__ with your content inside the parenthesis and separated by commas. Let’s try it!---Перш за все, ми розглянемо списки в R. Список - це послідовний набір різних об'єктів R, наприклад векторів, чисел, символів, інших списків тощо. Ви можете уявити список як контейнер з інформацією, що є добре структурованим і легко читається. Список може містити елементи різних типів, тоді як вектор (або матриця, що є багатовимірним вектором) не має. Щоб створити список, просто введіть __list()__ зі своїм вмістом у дужках і розділіть їх комами. Спробуємо це!First of all, we're gonna take a look at lists in R. A list is a sequenced collection of different objects of R, like vectors, numbers, characters, other lists as well, and so on. You can consider a list as a container of correlated information, well structured and easy to read. A list accepts items of different types, but a vector (or a matrix, which is a multidimensional vector) doesn't. To create a list just type list() with your content inside the parenthesis and separated by commas. Let’s try it!
Перш за все, ми розглянемо списки в R. Список - це послідовний набір різних об'єктів R, наприклад векторів, чисел, символів, інших списків тощо. Ви можете уявити список як контейнер з інформацією, що є добре структурованим і легко читається. Список може містити елементи різних типів, тоді як вектор (або матриця, що є багатовимірним вектором) не має. Щоб створити список, просто введіть list() зі своїм вмістом у дужках і розділіть їх комами. Спробуємо це!
movie <- list("Toy Story", 1995, c("Animation", "Adventure", "Comedy"))In the code above, the variable movie contains a list of 3 objects, which are a string, a numeric value, and a vector of strings. Easy, eh? Now let's print the content of the list. We just need to call its name.---У наведеному вище коді змінна фільм містить список з 3 об'єктів, які є символом, числом та символьним вектором. Легко, правда? Тепер надрукуємо вміст списку. Нам просто потрібно вказати його назву.In the code above, the variable movie contains a list of 3 objects, which are a string, a numeric value, and a vector of strings. Easy, eh? Now let's print the content of the list. We just need to call its name.
У наведеному вище коді змінна фільм містить список з 3 об'єктів, які є символом, числом та символьним вектором. Легко, правда? Тепер надрукуємо вміст списку. Нам просто потрібно вказати його назву.
movieA list has a sequence and each element of a list has a position in that sequence, which starts from 1. If you look at our previous example, you can see that each element has its position represented by double square brackets "**[[ ]]**".---Список має певну послідовність, і кожен елемент списку має місце в цій послідовності, що починається з 1. Якщо подивитися на наш попередній приклад, ви можете побачити, що кожен елемент має свою позицію, представлену подвійними квадратними дужками "**[[ ]]**".A list has a sequence and each element of a list has a position in that sequence, which starts from 1. If you look at our previous example, you can see that each element has its position represented by double square brackets "[[ ]]".
Список має певну послідовність, і кожен елемент списку має місце в цій послідовності, що починається з 1. Якщо подивитися на наш попередній приклад, ви можете побачити, що кожен елемент має свою позицію, представлену подвійними квадратними дужками "[[ ]]".
### Accessing items in a list | Доступ до елементів списку It is possible to retrieve only a part of a list using the **single _square** bracket operator_ "**[ ]**". This operator can be also used to get a single element in a specific position. Take a look at the next example:---Можна отримати лише частину списку, використовуючи оператор **одиничні квадратні дужки** "**[]**". Цей оператор також може використовуватися для отримання одного елемента у певній позиції. Погляньте на наступний приклад:---It is possible to retrieve only a part of a list using the single _square bracket operator_ "[ ]". This operator can be also used to get a single element in a specific position. Take a look at the next example:
Можна отримати лише частину списку, використовуючи оператор одиничні квадратні дужки "[]". Цей оператор також може використовуватися для отримання одного елемента у певній позиції. Погляньте на наступний приклад:
The index number 2 returns the second element of a list, if that element exists:---Індекс №2 витягує другий елемент списку, якщо такий елемент існує:The index number 2 returns the second element of a list, if that element exists:
Індекс №2 витягує другий елемент списку, якщо такий елемент існує:
movie[2]Or you can select a part or interval of elements of a list. In our next example we are retrieving the 1st, 2nd, and 3rd elements:---Або ви можете вибрати частину чи інтервал елементів списку. У нашому наступному прикладі ми витягнемо елементи 2 і 3:Or you can select a part or interval of elements of a list. In our next example we are retrieving the 1st, 2nd, and 3rd elements:
Або ви можете вибрати частину чи інтервал елементів списку. У нашому наступному прикладі ми витягнемо елементи 2 і 3:
movie[2:3]It looks a little confusing, but lists can also store names for its elements.---Це дещо збиває з пантелику, але списки також можуть містити назви для своїх елементів.It looks a little confusing, but lists can also store names for its elements.
Це дещо збиває з пантелику, але списки також можуть містити назви для своїх елементів.
xxxxxxxxxx### Named lists | Іменовані спискиThe following list is a named list:---Даний список - це іменований список:The following list is a named list:
Наступний список - це іменований список:
movie <- list(name = "Toy Story", year = 1995, genre = c("Animation", "Adventure", "Comedy"))Let me explain that: the list **movie** has some named objects within it. **name**, for example, is an object of type **character**, **year** is an object of type **number**, and **genre** is a vector with objects of type **character**.Now take a look at this list. This time, it's full of information and well organized. It's clear what each element means. You can see that the elements have different types, and that's ok because it's a list.---Дозвольте мені пояснити, що в списку ** movie ** є деякі іменовані об'єкти всередині нього. **name**, наприклад, є об'єктом типу **character(текст)**, **year** є об'єктом типу **number(число)**, а **genre** - це вектор з об'єктами типу **character(текст)**Тепер подивіться на цей список. Цього разу він містить інформацію та добре організований. Тепер зрозуміло, що означає кожен елемент. Як бачите, елементи мають різні типи, і це ok, тому що це список.Let me explain that: the list movie has some named objects within it. name, for example, is an object of type character, year is an object of type number, and genre is a vector with objects of type character.
Now take a look at this list. This time, it's full of information and well organized. It's clear what each element means. You can see that the elements have different types, and that's ok because it's a list.
Дозвольте мені пояснити, що в списку movie є деякі іменовані об'єкти всередині нього. name, наприклад, є об'єктом типу character(текст), year є об'єктом типу number(число), а genre - це вектор з об'єктами типу character(текст)
Тепер подивіться на цей список. Цього разу він містить інформацію та добре організований. Тепер зрозуміло, що означає кожен елемент. Як бачите, елементи мають різні типи, і це ok, тому що це список.
movieYou can also get separated information from the list. You can use **listName\$selectorName**. The _dollar-sign operator_ **$** will give you the block of data that is related to selectorName.Let's get the genre part of our movies list, for example.---Ви також можете отримати часткову інформацію зі списку. Ви можете використовувати **listName\$selectorName**. Оператор знак долара **$** дасть вам блок даних, пов'язаний з selectorName.Давайте отримаємо, наприклад, частину нашого списку фільмів про жанри.You can also get separated information from the list. You can use listName$selectorName. The dollar-sign operator $ will give you the block of data that is related to selectorName.
Let's get the genre part of our movies list, for example.
Ви також можете отримати часткову інформацію зі списку. Ви можете використовувати listName$selectorName. Оператор знак долара $ дасть вам блок даних, пов'язаний з selectorName.
Давайте отримаємо, наприклад, частину нашого списку фільмів про жанри.
movie$genreAnother way of selecting the genre column:---Інший спосіб витягнути колонку жанрів:Another way of selecting the genre column:
Інший спосіб витягнути колонку жанрів:
movie["genre"]You can also use numerical selectors like an array. Here we are selecting elements from 2 to 3.---Ви також можете використовувати числові селектори, як і в масивах. Тут ми відбираємо елементи від 2 до 3.You can also use numerical selectors like an array. Here we are selecting elements from 2 to 3.
Ви також можете використовувати числові селектори, як і в масивах. Тут ми відбираємо елементи від 2 до 3.
movie[2:3]The function __class()__ returns the type of a object. You can use that function to retrieve the type of specific elements of a list:---Функція __class()__ показує нам тип об'єкта. Ви можете використовувати цю функцію, щоб отримати тип конкретних елементів списку:The function class() returns the type of a object. You can use that function to retrieve the type of specific elements of a list:
Функція class() показує нам тип об'єкта. Ви можете використовувати цю функцію, щоб отримати тип конкретних елементів списку:
class(movie$name)class(movie$foreign)### Adding, modifying, and removing items | Додавання, модифікація і видалення елементівAdding a new element is also very easy. The code below adds a new field named **age** and puts the numerical value 5 into it. In this case we use the double square brackets operator, because we are directly referencing a list member (and we want to change its content).---Додати новий елемент у список також дуже легко. Наведений нижче код додає нове поле з назвою **age** і вводить в нього числове значення 5. У цьому випадку ми використовуємо оператор подвійних квадратних дужок, оскільки ми безпосередньо посилаємося на частину списку (і ми хочемо змінити її вміст).Adding a new element is also very easy. The code below adds a new field named age and puts the numerical value 5 into it. In this case we use the double square brackets operator, because we are directly referencing a list member (and we want to change its content).
Додати новий елемент у список також дуже легко. Наведений нижче код додає нове поле з назвою age і вводить в нього числове значення 5. У цьому випадку ми використовуємо оператор подвійних квадратних дужок, оскільки ми безпосередньо посилаємося на частину списку (і ми хочемо змінити її вміст).
movie[["age"]] <- 5movieIn order to modify, you just need to reference a list member that already exists, then change its content.---Для того, щоб змінити частину списку, потрібно просто послатися на ту частину, яка вже існує, а потім змінити її вміст.In order to modify, you just need to reference a list member that already exists, then change its content.
Для того, щоб змінити частину списку, потрібно просто послатися на ту частину, яка вже існує, а потім змінити її вміст.
movie[["age"]] <- 6# Now it's 6, not 5movieAnd removing is also easy! You just put **_NULL_**, which means missing value/data, into it.---Видаляти елементи також просто! Треба лиш зазначити **_NULL_ **, що означає відсутність даних.And removing is also easy! You just put NULL, which means missing value/data, into it.
Видаляти елементи також просто! Треба лиш зазначити NULL , що означає відсутність даних.
movie[["age"]] <- NULLmovie### Concatenating lists | Зчеплення списківConcatenation is the proccess of puting things together, in sequence. And yes, you can do it with lists. Just call the function **_c()_**. Take a look at the next example:---Зчеплення - це процес послідовного об'єднання речей. І так, ви можете зробити це зі списками. Просто виконайте функцію **_c()_**. Погляньте на наступний приклад:Concatenation is the proccess of puting things together, in sequence. And yes, you can do it with lists. Just call the function c(). Take a look at the next example:
Зчеплення - це процес послідовного об'єднання речей. І так, ви можете зробити це зі списками. Просто виконайте функцію c(). Погляньте на наступний приклад:
# We split our previous list in two sublistsmovie_part1 <- list(name = "Toy Story")movie_part2 <- list(year = 1995, genre = c("Animation", "Adventure", "Comedy"))# Now we call the function c() to put everything together againmovie_concatenated <- c(movie_part1, movie_part2)# Check it outmovie_concatenatedLists are really handy for organizing different types of elements in R, and also easy to use. Additionally, lists are also important since this type of data structure is essential to create data frames, our next covered topic.---Списки дійсно зручні для організації елементів різних типів у R, а також дуже прості у використанні. Крім того, списки також важливі, оскільки цей тип структури даних є базовим для створення фреймів даних, яким присвячена наступна тема.Lists are really handy for organizing different types of elements in R, and also easy to use. Additionally, lists are also important since this type of data structure is essential to create data frames, our next covered topic.
Списки дійсно зручні для організації елементів різних типів у R, а також дуже прості у використанні. Крім того, списки також важливі, оскільки цей тип структури даних є базовим для створення фреймів даних, яким присвячена наступна тема.
<hr><a id="ref2"></a><center><h2>Data Frames | Фрейми даних (Датафрейми)</h2></center>Data frame is a structure that is used for storing data tables. Underneath it all, a data frame is a list of vectors of same length, exactly like a table (each vector is a column). We call a function called __data.frame()__ to create a data frame and pass vector, which are our columns, as arguments. It is required to name the columns that will compose the data frame.---Фрейм даних - це структура, яка використовується для зберігання таблиць даних. Перш за все, датафрейм - це список векторів такої ж довжини як таблиця (кожен вектор - це одна її колонка). Ми застосовуємо функцію __data.frame() __ для створення фрейму даних з аргументом у вигляді вектору, що визначає назви його колонок. Потрібно дати назви колонкам, які разом становлять фрейм даних.Data frame is a structure that is used for storing data tables. Underneath it all, a data frame is a list of vectors of same length, exactly like a table (each vector is a column). We call a function called data.frame() to create a data frame and pass vector, which are our columns, as arguments. It is required to name the columns that will compose the data frame.
Фрейм даних - це структура, яка використовується для зберігання таблиць даних. Перш за все, датафрейм - це список векторів такої ж довжини як таблиця (кожен вектор - це одна її колонка). Ми застосовуємо функцію data.frame() для створення фрейму даних з аргументом у вигляді вектору, що визначає назви його колонок. Потрібно дати назви колонкам, які разом становлять фрейм даних.
movies <- data.frame(name = c("Toy Story", "Akira", "The Breakfast Club", "The Artist", "Modern Times", "Fight Club", "City of God", "The Untouchables"), year = c(1995, 1998, 1985, 2011, 1936, 1999, 2002, 1987), stringsAsFactors=F)Let's print its content of our recently created data frame:---Давайте роздрукуємо вміст нашого нещодавно створеного датафрейму:Let's print its content of our recently created data frame:
Давайте роздрукуємо вміст нашого нещодавно створеного датафрейму:
moviesIt's very easy! You can note how it looks like a table.We can also use the __"$"__ selector to get some type of information. This operator returns the content of a specific column of a data frame (that's why we have to choose a name for each column).---Це дуже просто! Ви можете помітити, що фрейм виглядає як таблиця.Ми також можемо використовувати селектор __"$"__для отримання певного типу інформації. Цей оператор витягує вміст певної колонки датафрейму (саме тому ми повинні вибрати назву для кожної колонки).It's very easy! You can note how it looks like a table.
We can also use the "$" selector to get some type of information. This operator returns the content of a specific column of a data frame (that's why we have to choose a name for each column).
Це дуже просто! Ви можете помітити, що фрейм виглядає як таблиця.
Ми також можемо використовувати селектор "$"для отримання певного типу інформації. Цей оператор витягує вміст певної колонки датафрейму (саме тому ми повинні вибрати назву для кожної колонки).
movies$nameYou retrieve data using numeric indexing, like in lists:---Ви отримуєте дані за допомогою цифрової індексації, як у списках:You retrieve data using numeric indexing, like in lists:
Ви отримуєте дані за допомогою цифрової індексації, як у списках:
# This returns the first (1st) columnmovies[1]The function called __str()__ is one of most useful functions in R. With this function you can obtain textual information about an object. In this case, it delivers information about the objects whitin a data frame. Let's see what it returns:---Функція __str () __ є однією з найбільш корисних функцій у R. За допомогою цієї функції ви можете отримати текстову інформацію про об'єкт. У цьому випадку він передає інформацію про об'єкти, що знаходяться в датафреймі. Давайте подивимося, що він витягне:The function called str() is one of most useful functions in R. With this function you can obtain textual information about an object. In this case, it delivers information about the objects whitin a data frame. Let's see what it returns:
Функція str () є однією з найбільш корисних функцій у R. За допомогою цієї функції ви можете отримати текстову інформацію про об'єкт. У цьому випадку він передає інформацію про об'єкти, що знаходяться в датафреймі. Давайте подивимося, що він витягне:
str(movies)It shouws this data frame has 8 observations, for 2 columns, so called __name__ and __year__. The "name" column is a factor with 8 levels and "year" is a numerical column. ---У цьому датафреймі є 8 спостережень, для 2 колонок, які мають назви __name__ і __year__. Колонка "name" є фактором із 8 рівнями, а "year" - це числова колонка.---It shouws this data frame has 8 observations, for 2 columns, so called name and year. The "name" column is a factor with 8 levels and "year" is a numerical column.
У цьому датафреймі є 8 спостережень, для 2 колонок, які мають назви name і year. Колонка "name" є фактором із 8 рівнями, а "year" - це числова колонка.
The class() function works for data frames as well. You can use it to determine the type of a column of a data frame.---Функція class() також працює для датафреймів. Ви можете використовувати її для визначення типу кожної колонки датафрейму.The class() function works for data frames as well. You can use it to determine the type of a column of a data frame.
Функція class() також працює для датафреймів. Ви можете використовувати її для визначення типу кожної колонки датафрейму.
class(movies$year)You can use numerical selectors to reach information inside the table.---Ви можете використовувати числові селектори, щоб витягнути потрібну інформацію з таблиці.You can use numerical selectors to reach information inside the table.
Ви можете використовувати числові селектори, щоб витягнути потрібну інформацію з таблиці.
movies[1,2] #1-Toy Story, 2-1995The **_head()_** function is very useful when you have a large table and you need to take a peek at the first elements. This function returns the first 6 values of a data frame (or event a list).---Функція **_head()_** дуже корисна, коли у вас є велика таблиця, і вам потрібно побачити перші елементи. Ця функція повертає перші 6 рядків датафрейму (або спостережень списку).The head() function is very useful when you have a large table and you need to take a peek at the first elements. This function returns the first 6 values of a data frame (or event a list).
Функція head() дуже корисна, коли у вас є велика таблиця, і вам потрібно побачити перші елементи. Ця функція повертає перші 6 рядків датафрейму (або спостережень списку).
head(movies)Similar to the previous function, **_tail()_** returns the last 6 values of a data frame or list.---Подібно до попередньої функції, ** _tail()_** повертає останні 6 рядків датафрейму або списку даних.Similar to the previous function, tail() returns the last 6 values of a data frame or list.
Подібно до попередньої функції, tail() повертає останні 6 рядків датафрейму або списку даних.
tail(movies)Now let's try to add a new column to our data frame with the length of each movie in minutes.---Тепер давайте спробуємо додати новий стовпець до нашого датафрейму з тривалістю кожного фільму в хвилинах.Now let's try to add a new column to our data frame with the length of each movie in minutes.
Тепер давайте спробуємо додати новий стовпець до нашого датафрейму з тривалістю кожного фільму в хвилинах.
movies['length'] <- c(81, 125, 97, 100, 87, 139, 130, 119)moviesA new column was included into our data frame with just one line of code. We just needed to add a vector to data frame, then it will be our new column.---Новий стовпець був включений у наш датафрейм лише одним рядком коду. Нам було просто потрібно додати ще один вектор до датафрейму, який став нашою новою колонкою.---A new column was included into our data frame with just one line of code. We just needed to add a vector to data frame, then it will be our new column.
Новий стовпець був включений у наш датафрейм лише одним рядком коду. Нам було просто потрібно додати ще один вектор до датафрейму, який став нашою новою колонкою.
Now let's try to add a new movie to our data set.---Тепер спробуємо додати новий фільм до набору даних.Now let's try to add a new movie to our data set.
Тепер спробуємо додати новий фільм до набору даних.
movies <- rbind(movies, c(name="Dr. Strangelove", year=1964, length=94))moviesREMEMBER!!!! You can't add a list with more variables than the data frame, and vice-versa.---ПАМ'ЯТАЙТЕ!!!! Ви не можете додати список з більшою кількістю змінних(колонок), ніж має датафрейм, і навпаки.---REMEMBER!!!! You can't add a list with more variables than the data frame, and vice-versa.
ПАМ'ЯТАЙТЕ!!!! Ви не можете додати список з більшою кількістю змінних(колонок), ніж має датафрейм, і навпаки.
We don't need this movie anymore, let's delete it. Here we are deleting row 12---Якщо нам якийсь фільм більше не потрібен, давайте його видалимо. Так, наприклад, ми видаляємо рядок 12---We don't need this movie anymore, let's delete it. Here we are deleting row 12
Якщо нам якийсь фільм більше не потрібен, давайте його видалимо. Так, наприклад, ми видаляємо рядок 12
movies <- movies[-12,]moviestail(movies)To delete a column you can just set it as **_NULL_**.---Щоб видалити колонку, ви можете просто присвоїти їй значення **_NULL_**.To delete a column you can just set it as NULL.
Щоб видалити колонку, ви можете просто присвоїти їй значення NULL.
movies[["length"]] <- NULLmoviesThat is it! You learned a lot about data frames and how easy it is to work with them. ---Це все! Ви багато чого навчились про фрейми даних і про те, як з ними можна легко працювати.That is it! You learned a lot about data frames and how easy it is to work with them.
Це все! Ви багато чого навчились про фрейми даних і про те, як з ними можна легко працювати.
<hr>#### Scaling R with big data | Масштабування R з використанням великих данихAs you learn more about R, if you are interested in exploring platforms that can help you run analyses at scale, you might want to sign up for a free account on [IBM Data Science Experience](http://cocl.us/dsx_rp0101en), which allows you to run analyses in R with two Spark executors for free.As you learn more about R, if you are interested in exploring platforms that can help you run analyses at scale, you might want to sign up for a free account on IBM Data Science Experience, which allows you to run analyses in R with two Spark executors for free.
---### About the Author: | Про автора:Hi! It's [Thiago Felipe Correa Borges](https://www.linkedin.com/in/thiago-felipe-corr%C3%AAa-borges-a932bb114?trk=nav_responsive_tab_profile), the author of this notebook. I hope you found R easy to learn! There's lots more to learn about R but you're well on your way. Feel free to connect with me if you have any questions.---Привіт! Це [Thiago Felipe Correa Borges](https://www.linkedin.com/in/thiago-felipe-corr%C3%AAa-borges-a932bb114?trk=nav_responsive_tab_profile), автор цього зошиту. Я сподіваюся, що ви побачили наскільки легко вивчати R! Є ще багато чого дізнатись про R, але ви вже рухаєтесь у вірному напрямку. Якщо у вас виникли запитання, можете без проблем зв'язатися зі мною.---### About the Translator: | Про перекладача:Hello! It's [Roman Kornyliuk](https://www.linkedin.com/in/kornelli), the translator of this notebook in Ukrainian. Feel free to connect with me if you have any questions too.---Привіт! Мене звуть [Roman Kornyliuk](https://www.linkedin.com/in/kornelli), перекладач цього зошиту на українську мову. Без вагань пишіть мені також, якщо у вас виникли запитання з приводу R.<hr>Copyright © 2018 [Roman Kornyliuk](https://www.linkedin.com/in/kornelli). Copyright © [IBM Cognitive Class](https://cognitiveclass.ai). This notebook and its source code are released under the terms of the [MIT License](https://cognitiveclass.ai/mit-license/).•Hi! It's Thiago Felipe Correa Borges, the author of this notebook. I hope you found R easy to learn! There's lots more to learn about R but you're well on your way. Feel free to connect with me if you have any questions.
Привіт! Це Thiago Felipe Correa Borges, автор цього зошиту. Я сподіваюся, що ви побачили наскільки легко вивчати R! Є ще багато чого дізнатись про R, але ви вже рухаєтесь у вірному напрямку. Якщо у вас виникли запитання, можете без проблем зв'язатися зі мною.
Hello! It's Roman Kornyliuk, the translator of this notebook in Ukrainian. Feel free to connect with me if you have any questions too.
Привіт! Мене звуть Roman Kornyliuk, перекладач цього зошиту на українську мову. Без вагань пишіть мені також, якщо у вас виникли запитання з приводу R.
Copyright © 2018 Roman Kornyliuk.
Copyright © IBM Cognitive Class. This notebook and its source code are released under the terms of the MIT License.