Здесь я представляю несколько фрагментов кода, которые облегчат вам жизнь в R Language.

Переход с одного языка программирования на другой иногда является сложной задачей. Я не говорю, что это сложно, но вы знаете, что код, который вы пишете почти автоматически на Python, просто не может понять в R?

Что ж, в этом посте я добавляю несколько фрагментов кода, которые помогут вам разобраться с основными вещами в R.

Создание двух фреймов данных для примеров

df <- data.frame( col1=c(1,1,3,4,5),
                  col2=c(1,4,5,6,7),
                  col3=c(5,6,7,8,9),
                  col4=c(7,8,9,0,1),
                  col5=c(11,22,44,55,33)
                  )
df2 <- data.frame( col1=c(2,2,3,2,2),
                   col2=c(3,3,5,3,3),
                   col3=c(5,5,7,5,5),
                   col4=c(1,1,9,1,1),
                   col5=c(0,0,4,0,0))

Проценты

Вычислять проценты легко в Pandas, и я думаю, еще проще в R.

# Create a new column with percentages
df$col1_pct <- proportions(df$col1)
# If you need it rounded
df$col1_pct <- round( proportions(df$col1), 1 )

Выбор или изменение порядка строк или столбцов

Да, очень нужно и очень похоже на нотацию Python. Есть два пути — использовать базу R или использовать пакет dplyr.

# Selecting Rows and columns with Base R
# Here, I am selecting rows 1 and 2 and columns 1 and 6
# Remember in R the indexing starts at 1
df[c(1,2),c(1,6)]
# Change column Order with dplyr
df %>% select( 'col1', 'col1_pct', everything() )

Удаление строк или столбцов

Это способ делать то, что мне нравится больше, чем Python. Вам просто нужно поставить знак минус (или тире) перед номером строки или столбца, который нужно удалить. Это удивительно просто и интуитивно понятно.

Синтаксис похож на Python: df[ rows, columns ]

# Remove the column 6, the one we created with pct calculations.
df[, -6]
# If I want to remove more than one, just use a range or a vector
# Remove rows from 1 to 3
df[-(1:3),]
# Remove row 1 and columns 4 and 6
df[ -1, -c(4,6)]

Дублированные значения

Я знаю, дублированные панды превосходны. Нет вопросов. В R мы можем использовать функцию duplicated()

# Check Duplicated values
duplicated(df$col1)
[1] FALSE  TRUE FALSE FALSE FALSE
Filter off duplicates based on column 1 values: row 2 is gone
df[!duplicated(df$col1),]
  col1 col2 col3 col4 col5 col1_pct
1    1    1    5    7   11      0.1
3    3    5    7    9   44      0.2
4    4    6    8    0   55      0.3
5    5    7    9    1   33      0.4

Объединить кадры данных

Нам, специалистам по данным, часто приходится в какой-то момент собирать наборы данных. Вот два простых способа сделать это в R Language. Они похожи на pd.concat

#First, let's create df2
df2 <- data.frame( col1=c(2,2,3,2,2),
                   col2=c(3,3,5,3,3),
                   col3=c(5,5,7,5,5),
                   col4=c(1,1,9,1,1),
                   col5=c(0,0,4,0,0))
# Stack dataframes (merged by row, one over the other)
rbind(df, df2)
# Append colums to df (merged by column, one beside the other)
cbind(df, df2)

Сортировать по столбцу

# Sort Column
df[order(df$col5),]
col1 col2 col3 col4 col5
1    1    1    5    7   11
2    1    4    6    8   22
5    5    7    9    1   33
3    3    5    7    9   44
4    4    6    8    0   55

Добавить элементы к вектору

Списки в R называются векторами. Поэтому, чтобы добавить дополнительное значение к вектору, мы просто используем этот код.

# Append elements to a list
my_vector <- c(0)
0
my_vector <- c(my_vector, 1,2,3,4)
0 1 2 3 4

Разворот дольше

Следующий фрагмент похож на pd.melt(), но я думаю, что он более интуитивно понятен. Я люблю эту функцию. Что делает, так это поворачивает таблицу из столбцов в строки. Вам просто нужно выбрать столбец, который будет точкой поворота, и назначить имя для столбца, которое будет содержать имена столбцов, а другое — для хранения значений.

# Creating a new df
df3 <- data.frame( col1=c(2,2,3,2,2),
                   col2=c(3,3,5,3,3),
                   col3=c(5,5,7,5,5),
                   col4=c(1,1,9,1,1),
                   name=c('Anna','Bruno', 'Charles', 'Dan', 'Earl'))
col1 col2 col3 col4    name
1    2    3    5    1    Anna
2    2    3    5    1   Bruno
3    3    5    7    9 Charles
4    2    3    5    1     Dan
5    2    3    5    1    Earl

Теперь давайте выберем имя в качестве точки поворота, а остальные столбцы станут строками.

# Pivot longer
pivot_longer(df3, 
             cols= !c('name'), # pivoting point
             names_to= 'columns', # names of the columns
             values_to= 'values') # values of the columns

Поворот шире

Эта функция аналогична pd.pivot(). Точно так же, как мы можем повернуть таблицу от столбцов к строкам, мы можем вернуть ее в расширенную форму, преобразовав строки в столбцы.

Рассмотрим таблицу с картинки выше и назовем ее df3_long .

# Pivot Wider
pivot_wider(df3_long,
            names_from = 'columns', # names of the columns
            values_from= 'values') # values for the columns

# OUTPUT:
name     col1  col2  col3  col4
  <chr>   <dbl> <dbl> <dbl> <dbl>
1 Anna        2     3     5     1
2 Bruno       2     3     5     1
3 Charles     3     5     7     9
4 Dan         2     3     5     1
5 Earl        2     3     5     1

Забрать

Я представил несколько основных фрагментов кода для вашего набора инструментов с использованием языка R.

  1. Вычисление процентов
    2. Разделение наборов данных
    3. Изменение порядка столбцов
    4. Удаление строк или столбцов
    5. Определение повторяющихся записей
    6. Объединение кадров данных
    7. Сортировка кадров данных
    8. Добавление элементов к вектору
    9. Сводка длиннее
    10. Сводка шире

Больше моих постов смотрите в моем блоге здесь, на Medium.