Подсчитайте количество вхождений в разных фреймах данных и получите номера строк в виде строк - PullRequest
0 голосов
/ 16 октября 2019

Report$keyid = c(ab~2000~to81~~91,cb~1000~tr50~xz~23~45,yo~1999~~es~21~45) key_id = c(cb~1000~tr50~xz~23~45, ab~2000~to81~~91, cb~1000~tr50~xz~23~45, yo~1999~~es~21~45) desc = c(low, medium,low, high) error=data.frame(key_id, desc)

Фрейм данных отчета состоит из всех уникальных значений, в то время как в Error также есть дубликаты значений.

Я хочу добавить столбец Report $ errorcount, чтобы получить количество вхожденийдля каждого отчета $ keyid, сравнивая его с ошибкой $ key_id в кадре данных ошибки.

Другой столбец Report $ errorline, так что он сообщает позиции, где встречаются keyids в кадре данных ошибки. Фактический фрейм данных содержит тысячи строк.

Желаемый результат -

Report$errorcount = c(1,2,1)
Report$errorline = c("2","1,3","4")

1 Ответ

0 голосов
/ 17 октября 2019

Это работает, но вы можете проверить, дает ли столбец строки ошибок, полученный в приведенном ниже коде, именно то, что вам нужно.

library(dplyr)

key_id = c("cb~1000~tr50~xz~23~45", "ab~2000~to81~~91", "cb~1000~tr50~xz~23~45", "yo~1999~~es~21~45")
desc = c("low", "medium","low", "high")
error = data.frame(key_id, desc)
error$errorline <- row_number(error$key_id)

Report <- data.frame(
  keyid = c("ab~2000~to81~~91","cb~1000~tr50~xz~23~45","yo~1999~~es~21~4")
)

tb <- as.data.frame(table(error$key_id))
colnames(tb) <- c("keyid", "errorcount")

Report <- left_join(Report, tb) 
Report <- left_join(Report, error, by = c("keyid" = "key_id"))
Report <- Report[-3] # drop desc column
...