R dataframes: как создать новый столбец, который вычисляет значения на основе нескольких других столбцов? - PullRequest
0 голосов
/ 22 апреля 2020

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

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Вы можете использовать table для подсчета комбинаций и as.data.frame, чтобы отобразить его как data.frame.

as.data.frame(table(x))
#  color shape Freq
#1     1     1    1
#2     2     1    0
#3     1     2    1
#4     2     2    2

Данные:

(x <- data.frame(color=c(1,1,2,2), shape=c(1,2,2,2)))
#  color shape
#1     1     1
#2     1     2
#3     2     2
#4     2     2
0 голосов
/ 22 апреля 2020

Вы можете сгруппировать по столбцам, а затем добавить столбец с размером группы. Это легко сделать в dplyr:

library(dplyr)
dat <- data.frame(col=c("red", "red", "red", "blue"), shape=c("oval", "oval", "circle", "circle"))
dat %>% group_by(col, shape) %>% mutate(ct=n()) %>% ungroup()
# # A tibble: 4 x 3
#   col   shape     ct
#   <fct> <fct>  <int>
# 1 red   oval       2
# 2 red   oval       2
# 3 red   circle     1
# 4 blue  circle     1

Если вместо этого вы хотите свернуть все повторяющиеся строки в одну строку с соответствующим счетчиком, то dat %>% count(col, shape), как предложено @RonakShah в комментариях , это путь к go.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...