Выборка для нескольких столбцов одновременно и возврат к агрегированному фрейму данных - PullRequest
0 голосов
/ 28 августа 2018

У меня есть набор данных, который выглядит следующим образом:

Column 1   Column 2   Column 3    Column 4
  Male        35        USA         DC
  Female      10        USA         NYC

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

Итак, мой новый фрейм данных выглядит так:

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

  Column Name   Nominal  Percent 
1 Col1             3      1.00
2 Col2          69333    99.51
3 Col3          65766    94.40
4 Col4          60727    87.16

Что мне нужно для второго фрейма данных, так это создать третий столбец - пример модальности. Новый столбец должен быть образцом каждого столбца. Как это:

  Column Name   Nominal  Percent  Sample_1
1 Col1             3       1.00     Male
2 Col2           69333     99.51    25

Я не могу вспомнить, как автоматически это делать для каждого столбца. Я не хочу вручную вводить каждое имя столбца. Есть намеки?

1 Ответ

0 голосов
/ 28 августа 2018

Для полноты.

Данные, слегка модифицированные, чтобы сделать их согласованными и дружественными к R (без пробелов):

origdat <- read.table(header=TRUE, stringsAsFactors=FALSE, text='
Column_1   Column_2   Column_3    Column_4
  Male        35        USA         DC
  Female      10        USA         NYC')

newdat <- read.table(header=TRUE, stringsAsFactors=FALSE, text='
  Column_Name   Nominal  Percent 
1 Column_1          3      1.00
2 Column_2       69333    99.51
3 Column_3       65766    94.40
4 Column_4       60727    87.16')

Детальный метод с использованием временного data.frame для хранения выборок:

set.seed(2)
tempdat <- data.frame(Column_Name = names(origdat),
                      Sample_1 = sapply(origdat, sample, size=1),
                      stringsAsFactors=FALSE)

Слияние с базой R:

merge(newdat, tempdat, by="Column_Name", all=TRUE)
#   Column_Name Nominal Percent Sample_1
# 1    Column_1       3    1.00     Male
# 2    Column_2   69333   99.51       10
# 3    Column_3   65766   94.40      USA
# 4    Column_4   60727   87.16       DC

Слияние с dplyr:

dplyr::left_join(newdat, tempdat, by="Column_Name")
#   Column_Name Nominal Percent Sample_1
# 1    Column_1       3    1.00     Male
# 2    Column_2   69333   99.51       10
# 3    Column_3   65766   94.40      USA
# 4    Column_4   60727   87.16       DC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...