Я просматривал сообщения о суммировании данных, но, похоже, не нашел того, что искал.Как вы суммируете столбцы на основе уникальных идентификаторов, не зная идентификаторов в R?
Я хочу создать сводный «счет-стол», который позволит мне увидеть, как часто пациенту назначают определенные лекарства. Тот факт, что некоторые пациенты получали сразу несколько лекарств, не имеет значения, потому что я просто хочу получить сводку всего лекарственного средства, а затем вычислить, какой процент каждого класса лекарств относится ко всем лекарствам. Проблема в том, что я не знаю названий возможных лекарств, они «скрыты» где-то в data.frame
, поэтому я должен указать, какие столбцы R должны будут сначала просмотреть, чтобы создать «список», посредством которой он может суммировать столбцы.
Я ожидаю, что это указывает на пакет plyr
, но мои попытки правильно использовать функции в нем до сих пор не работали.
Мой df
выглядит как этот
x <- sample(letters[1:4], 20, replace = TRUE)
y <- sample(letters[1:5], 20, replace = TRUE)
z <- sample(letters[1:6], 20, replace = TRUE)
df<-data.frame(x,y,z)
head(df)
x y z
1 a a f
2 a c d
3 b b e
4 c d b
5 a a b
6 c d d
, как вы можете видеть, data.frame
содержит три колонки, которые имеют одни и те же, но и разные буквы, с указанием названия препарата данного.
Что я сейчас хотел бы сделать, это создать список уникальных персонажей,
unique(x)
unique(y)
unique(z)
который служит мой список ссылок, с помощью которого R может затем суммировать счетчики в каждом столбце.
summary(df)
возвращает сводку отсчетов каждого столбца, но не каждый сам ID, а также без процента от всех уникальных подсчетов.
Я также попытался следующие, который вроде идет в правильном направлении, но в идеале, я хотел бы иметь список уникальных персонажей, которые я могу подать в length
аргумент
ddply(df, .(x), summarize, counts=length(unique(y)))
Любой Идея, как я могу это сделать? Помощь очень ценится.
sapply (Д.Ф., функция (х) имен (таблица (х))) –
@ BondedDust Я бы использовал 'lapply' вместо' sapply'. Если каждый 'names (table (x))' возвратится вектор такой же длины, то результатом будет массив вместо списка, и это может вызвать проблемы, если вам нужно впоследствии обработать этот объект. – nicola
Вправо. Может даже использовать 'lapply (df, function (x) list (nams = unique (x), count = length (unique (x))) –