這是我的第一篇文章,我對編程和R非常陌生,所以請原諒任何愚蠢。統計多個變量的因子水平的發生並在一個表中統計結果
我有以下數據幀:
a <- data.frame("sickness1" = c(1,1,2,3,3,5,6, 4, 4, 4),
"sickness2" = c(NA, NA, 3, 3, 4, 6, 1, 2, 5, 6),
"sickness3" = c(NA, NA, 3, 4, 4, 6, 1, 2, 5, 6),
"sickness4" = c(NA, NA, 6, 3, 4, 6, 1, 2, 5, 6))
每一行代表一個案件。每列是一個有序因子變量。我改變了變量,像這樣的因素(使用的提示,我的計算器找到了!):
a[] <- lapply(a, factor,
levels = c(1:6),
labels = c(3, 25, 50, 75, 97, 100))
我想獲得以下輸出:
percent sickness1 sickness2 sickness3 sickness4
1 3 1 1 1 2
2 25 1 1 1 1
3 50 2 1 1 2
4 75 1 2 1 3
5 97 1 1 1 1
6 100 2 2 3 1
我已經找到了解決辦法,這是非常longwinded:
# counting
ab <- ldply(lapply(a, count))
#getting it into the right format
ab2 <- dcast(
data = ab,
formula = x ~ .id,
value.var = "freq")
# changing the name of the first column
colnames(ab2)[1] <- "percent"
#deleting row 7 cause it contains the NAs which I dont want to have
ab2 <- ab2[-7,]
ab2
有沒有更快更簡單的方法來做到這一點?就像在某些方面使用ddply一樣? 總結(a)給我的輸出太亂了,我不知道如何操作它來看看我想要的樣子。另外我一起工作的真正的數據是這樣大,我必須做這樣的事情很多次....
我想這會,一般是有更多的幫助這樣的數據在2列「data.frame」(這裏[病態百分比]);那麼你可以調用'table(mydataframe)'。例如。 'table(data.frame(pct = c(5,10,15,10,15,5,10,10,20,25),sickness = c(1,1,1,2,2,3,4, 4,4,4)))' – 2014-09-20 20:25:09
您建議infromation丟失的形式。什麼是可能的是一個3列長的數據格式,所以值的另一列,然後再次它不工作與表(mydataframe)。更多地解釋實際數據,每一行都是一個機構,例如一家醫院,百分比是百分比範圍,每個機構評估他們的病人有多少患病1,疾病2等等 – grrgrrbla 2014-09-20 20:57:01
我看到;但是(除非內存是問題)像'reshape(a,direction =「long」,vary = list(1:4),sep =「」,times = names(a))這樣的「data.frame」可以存儲必要的信息,很容易操縱。 (在這種情況下,您必須明確聲明調用'table'內的兩列)。我希望我不會誤解你的意思 – 2014-09-20 21:22:01