#r
#r
Вопрос:
Я пытаюсь найти общее количество строк, значение столбца которых равно 3 или 4. При этом первая строка имеет только одно значение, равное 3, поэтому, если я создам новый столбец
currentdx_count1$TotalDiagnoses
Этот новый столбец под названием TotalDiagnoses должен содержать только значение 1 для первой строки. Я пытался
currentdx_count1$TotalDiagnoses <- rowSums(currentdx_count1[2:32])
Это не дает мне того, что мне нужно, как ожидалось, потому что это буквально суммирует всю строку. При этом, существует ли существующая функция, которая делает то, что я хочу сделать, или мне придется ее создать? Могу ли я указать больше в rowSums, чтобы это работало так, как мне нужно?
Спасибо за любую помощь.
Редактировать: я пытаюсь адаптировать метод, который я использовал ранее в своем скрипте, который работает для аналогичной цели
findtotal <- endsWith(names(currentdx_count1), 'Current')
findtotal <- lapply(findtotal, `>`, 2)
findtotal <- unlist(findtotal)
currentdx_count1$TotalDiagnoses <- currentdx_count1[c(findtotal)]
Я получаю ошибку, которую я никогда раньше не видел (ошибка в представлении?!)
Итак, я попробовал только это
findtotal <- endsWith(names(currentdx_count1), 'Current')
currentdx_count1$TotalDiagnoses <- currentdx_count1[c(findtotal)]
Это приближает меня, но это нахождение общего количества для каждого столбца отдельно, что мне не нужно. Я хочу, чтобы один столбец включал значения для каждого SID.
Ответ №1:
Вы можете сравнить фрейм данных со значением 3 или 4, а затем использовать rowSums
для подсчета :
currentdx_count1$TotalDiagnoses <- rowSums(currentdx_count1[-1] == 3 |
currentdx_count1[-1] == 4)
currentdx_count1$TotalDiagnoses
#[1] 1 2 2 2 1 1 1 1 1 1 1 1 1 2