подсчитывать вхождения в нескольких столбцах (но для каждой строки) на основе значения в другом столбце - PullRequest
0 голосов
/ 18 июня 2020
• 1000 много АН. Для каждой строки я хотел бы подсчитать количество появлений этого значения из столбца value_needed во всех других столбцах, здесь position_1: position_6.

Вот некоторые поддельные данные:

position_1 <- c(6, -8, 8, 0, 0, -6)
position_2 <- c(NA, 6, -8, 8, 8, 0)
position_3 <- c(NA, NA, 6, -8, 0, 8)
position_4 <- c(NA, NA, NA, 6, -8, -8)
position_5 <- c(NA, NA, NA, NA, 6, 8)
position_6 <- c(NA, NA, NA, NA, NA, 6)

value_needed <- c(0, 6, -8, 8, 0, 8)

df <- data.frame(position_1, position_2, position_3,position_4, position_5, position_6,value_needed)

В идеальном случае мне нужно было бы создать новый столбец (назовите его o cc), который подсчитывает количество вхождений значения в столбце value_needed из всех столбцов позиции в этой конкретной строке.

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

occ = c(0,1,1,1,2,1)

Если у кого-то есть подсказки, я очень ценю это. Спасибо

1 Ответ

1 голос
/ 18 июня 2020

base раствор

df$occ <- rowSums(df[1:6] == df$value_needed, na.rm = T)

dplyr раствор

library(dplyr)

df %>%
  rowwise() %>%
  mutate(occ = sum(c_across(pos_1:pos_6) == value_needed, na.rm = T)) %>%
  ungroup()

вывод

# # A tibble: 6 x 8
#   pos_1 pos_2 pos_3 pos_4 pos_5 pos_6 value_needed   occ
#   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>        <dbl> <int>
# 1     6    NA    NA    NA    NA    NA            0     0
# 2    -8     6    NA    NA    NA    NA            6     1
# 3     8    -8     6    NA    NA    NA           -8     1
# 4     0     8    -8     6    NA    NA            8     1
# 5     0     8     0    -8     6    NA            0     2
# 6    -6     0     8    -8     8     6            8     2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...