Мутирующая колонна при условии - PullRequest
1 голос
/ 26 сентября 2019

Я новичок в R, и я застрял со следующим ..

df <- tibble(
  id = c(01, 02), 
  a = c(0.44, 0.42), 
  b = c(1, 0.42), 
  c = c(NaN, 0.71), 
  d = c(0.75, 0), 
  e = c(0.66, 0.75), 
  f = c(0.5, 0.22), 
  g = c(1, NaN), 
  h = c(0.8, NaN)
)

Интересно, как я могу изменить столбец, который считает количество ячеек> 0 - отдельно длястолбцы a: d и e: h (& rowwise)

Я думал о чем-то вроде этого ..

df1 <- df %>% 
  rowwise() %>% 
  mutate(casesatod = length(which(., > 0), na.rm = TRUE),
         casesetoh = length(which(., > 0), na.rm = TRUE))

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

Я бы очень хотел получить от вас помощь!

Заранее спасибо!

1 Ответ

2 голосов
/ 26 сентября 2019

Опция будет rowSums после выбора подмножества столбцов из набора данных.Это было бы более эффективно, чем rowwise, так как оно векторизовано

library(dplyr)
df %>% 
    mutate(casesatod = rowSums(.[2:5] > 0, na.rm = TRUE), 
           casesetoh = rowSums(.[6:9] > 0, na.rm = TRUE))

Если нам нужно использовать имена столбцов для выбора, используйте select

df %>%
   mutate(casesatod = rowSums(select(., a:d) > 0, na.rm = TRUE),
          casesetoh = rowSums(select(., e:h)  > 0, na.rm = TRUE))
# A tibble: 2 x 11
#     id     a     b      c     d     e     f     g     h casesatod casesetoh
#  <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>     <dbl>     <dbl>
#1     1  0.44  1    NaN     0.75  0.66  0.5      1   0.8         3         4
#2     2  0.42  0.42   0.71  0     0.75  0.22   NaN NaN           3         2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...