Как сделать бинарный оператор if в R? - PullRequest
0 голосов
/ 17 апреля 2020

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

Я благодарен за помощь.

Ответы [ 2 ]

2 голосов
/ 17 апреля 2020

Вот некоторые другие базовые решения R

> tapply(df$col2, df$col1, sum)
a b c 
1 1 2 

> xtabs(col2~col1,df)
col1
a b c 
1 1 2 

Фиктивные данные

df <- structure(list(col1 = structure(c(1L, 3L, 1L, 2L, 1L, 3L, 3L, 
2L, 2L, 3L), .Label = c("a", "b", "c"), class = "factor"), col2 = c(0, 
0, 0, 0, 1, 1, 1, 1, 0, 0)), class = "data.frame", row.names = c(NA, 
-10L))

> df
   col1 col2
1     a    0
2     c    0
3     a    0
4     b    0
5     a    1
6     c    1
7     c    1
8     b    1
9     b    0
10    c    0
2 голосов
/ 17 апреля 2020

Мы можем сгруппировать по первому столбцу ('col1') и затем получить sum из 'col2'

library(dplyr)
df1 %>%
   group_by(col1) %>%
   summarise(Total = sum(col2))

Или в data.table

library(data.table)
setDT(df1)[, .(Total = sum(col2)), col1]

или с base R

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