我的帖子是關於我獲得的結果,似乎是不連貫的。 我DATAS是:關於加權數據的不相關結果
DF=structure(list(Age = c(16L, 29L, 22L, 64L, 42L, 46L, 30L, 37L,
31L, 52L, 44L, 54L, 23L, 22L, 42L, 39L, 39L, 51L, 25L, 64L, 55L,
56L, 27L, 31L, 39L, 22L, 54L, 33L, 34L, 18L, 39L, 41L, 52L, 41L,
27L, 36L, 64L, 42L, 21L, 44L, 50L, 35L, 22L, 65L, 53L, 18L, 25L,
59L, 56L, 52L, 39L, 40L, 25L, 63L, 43L, 23L, 52L, 48L, 24L, 45L,
27L, 42L, 56L, 43L, 28L, 51L, 54L, 16L, 65L, 56L, 47L, 45L, 29L,
41L, 52L, 50L, 26L, 44L, 35L, 55L, 57L, 43L, 52L, 28L, 33L, 20L,
39L, 15L, 55L, 20L, 30L, 10L, 54L, 51L, 47L, 36L, 42L, 33L, 26L,
29L, 19L, 22L, 22L, 22L, 40L, 33L, 20L, 43L, 53L, 25L, 25L, 49L,
25L, 31L, 45L, 51L, 60L, 54L, 20L, 25L, 60L, 48L, 35L, 42L, 14L,
28L, 55L, 20L, 35L, 17L, 46L, 20L, 45L, 37L, 33L, 36L, 60L, 47L,
27L, 25L, 51L, 32L, 19L, 25L, 19L, 60L, 18L, 17L, 33L, 26L, 33L,
32L, 33L, 22L, 17L, 24L, 43L, 38L, 27L, 40L, 42L, 41L, 31L, 43L,
34L, 33L, 42L, 37L, 24L, 50L, 53L, 35L, 50L, 37L, 46L, 39L, 33L,
56L, 58L, 23L, 31L, 52L, 50L, 33L, 56L, 55L, 20L, 22L, 44L, 50L,
30L, 58L, 59L, 16L, 33L, 53L, 50L, 20L, 31L, 22L, 38L, 59L, 38L,
62L, 52L, 30L, 18L, 53L, 38L, 41L, 44L, 53L, 19L, 53L, 57L),
Sous_Categorie = c("7", "7", "7", "7", "7", "7", "7", "7",
"7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7",
"7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7",
"7", "7", "7", "7,9", "8", "8", "8", "8", "8", "9", "9",
"11", "10,7", "10,8,9", "7", "7", "7", "7", "7", "7,8", "8",
"7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "7", "8",
"11", "7", "12", "12", "12", "12", "12", "12", "12", "12",
"12", "12", "12", "12", "12", "12", "12", "12", "13", "13",
"13", "13", "13", "14", "14", "14", "14", "14", "14", "14",
"14", "14", "14", "14", "14", "14", "14", "14", "14", "14",
"14", "14", "14", "15", "15", "15", "15", "15", "17", "17",
"17", "17", "17", "17", "17", "17", "17", "17", "17", "17",
"17", "17", "17", "17", "17", "17", "17", "17", "17", "17",
"17", "17", "17", "17", "17", "17", "17", "17", "17", "17",
"17", "17", "17", "17", "17", "17", "17", "17", "17", "17",
"17", "17", "17", "17", "17", "17", "17", "17", "17", "17",
"17", "17", "17", "17", "17", "17", "17", "17", "17", "17",
"17", "17", "17", "17", "17", "17", "17", "17", "17", "17",
"17", "17", "17", "17", "17", "18", "18", "18", "7,12", "7,12",
"7,12", "7,12", "7,13,17", "7,16", "7,17", "7,17", "7,17",
"7,17", "7,17", "8,17", "8,17", "11,17", "7,17", "7,17",
"8,17", "7,17", "7,17", "12,14", "12,15", "17,18")), .Names = c("Age",
"Sous_Categorie"), row.names = c(NA, -215L), class = "data.frame")
是(再次感謝)使用with the help of stackoverflow member's代碼
cats <- unique(unlist(strsplit(DF$Sous_Categorie, ",")))
cat_perc <- function(cats, vec) {
# percentages
nums <- sapply(cats, function(cat) sum(grepl(cat, vec)))
perc <- nums/sum(nums)
final <- perc * length(vec)
df <- as.data.frame(as.list(final))
names(df) <- cats
return(df)
}
a=cat_perc(cats, DF$Sous_Categorie)
a=(a/sum(a))*100
,我得到的結果:
7 9 8 11 10 12 13 14
46.20061 1.215805 4.863222 0.9118541 0.6079027 6.68693 1.823708 6.382979
15 17 18 16
1.823708 27.96353 1.215805 0.3039514
這些結果並非在所有連貫的根據原始數據DF,很明顯我比17更多。爲什麼我會得到這樣的結果?這是一個編碼問題還是統計問題?
非常感謝
當看到一個7時,'grepl'返回'TRUE',即使這個7在17中也是如此。最好使用'table(unlist(strsplit(vec,',')))' – alistaire
謝謝很多 !這是一場噩夢。將使用字符而不是數字。但如果有人知道如何用數字來做,我很感興趣。我試了一下表,我沒有正確的工作。 – ranell