Соотношение между строками и конкретными столбцами в R - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу получить долю обнаружения pcr и создать новый столбец, используя следующий набор тестовых данных.Я хочу пропорцию обнаружения для каждой строки, только в столбцах от pcr1 до pcr6.Я хочу, чтобы другие столбцы игнорировались.

  site sample pcr1 pcr2 pcr3 pcr4 pcr5 pcr6
pond 1      1 1    1    1    0    1    1
pond 1      2 1    1    0    0    1    1
pond 1      3 0    0    1    1    1    1

Я хочу, чтобы выходные данные создали новый столбец с определением пропорции.Приведенный выше набор данных является лишь небольшим образцом того, который я использую.Я пробовал:

data$detection.proportion <- rowMeans(subset(testdf, select = c(pcr1, pcr2, pcr3, pcr4, pcr5, pcr6)), na.rm = TRUE)

Это работает для этого небольшого набора данных, но я попробовал свой больший, и он не работал, и это дало бы неправильные пропорции.То, что я ищу, - это способ подсчитать все 1 с pcr1 до pcr6 и разделить их на общее число 1 и 0 (я знаю, что это 6, но я бы хотел, чтобы R распознал это, если он не введен).

1 Ответ

0 голосов
/ 21 февраля 2019

Я нашел способ сделать это на случай, если кому-то еще понадобится.Я не знаю, является ли это наиболее эффективным, но это сработало для меня.

data$detection.proportion <- length(subset(testdf, select = c(pcr1, pcr2, pcr3, pcr4, pcr5, pcr6)))
#Calculates the length of pcrs = 6

p.detection <- rowSums(data[,c(-1, -2, -3, -10)] == "1") 
#Counts the occurrences of 1 (which is detection) for each row 

data$detection.proportion <- p.detection/data$detection.proportion
#Divides the occurrences by the total number of pcrs to find the detected proportion.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...