प्रतिशत के रूप में तालिका में डेटा स्वरूपित करना
मेरे पास एक डेटाफ्रेम है जो इस तरह दिखता है:
यहाँ इस DF बनाने के लिए कोड है:
structure(list(ethnicity = structure(c(1L, 2L, 3L, 5L), .Label = c("AS",
"BL", "HI", "Others", "WH", "Total"), class = "factor"), `Strongly agree` = c(30.7,
26.2, 37.4, 31.6), Agree = c(43.9, 34.5, 41, 45.4), `Neither agree nor disagree` = c(9.4,
14.3, 8.6, 8.7), Disagree = c(10, 15.5, 9.9, 9.7), `Strongly disagree` = c(6,
9.5, 3.2, 4.6)), row.names = c(NA, -4L), class = "data.frame")
मैं डेटा बार जोड़ना चाहता हूं और ये संख्या प्रतिशत के रूप में बनाता है। मैंने ऐसा करने के लिए फॉर्मेटेबल लाइब्रेरी का उपयोग करने की कोशिश की (नीचे मेरा कोड देखें)।
formattable(df,align=c("l","l","l","l","l","l"),
list(`ethnicity` = formatter("span", style = ~ style(color = "grey", font.weight = "bold"))
,area(col = 2:6) ~ function(x) percent(x / 100, digits = 0)
,area(col = 2:6) ~ color_bar("#DeF7E9")))
मैं 2 समस्याओं का सामना कर रहा हूँ:
- अंक तालिका के आउटपुट में प्रतिशत के रूप में प्रकट नहीं होते हैं।
- संरेखण पिछले कॉलम में बंद लगता है यानी
वास्तव में सराहना करेंगे कि क्या कोई मुझे यह समझने में मदद कर सकता है कि मैं यहां क्या याद कर रहा हूं?
जवाब
यहां एक समाधान है, लेकिन इसके लिए बहुत अधिक टाइपिंग की आवश्यकता है, मुझे लगता है कि इसका उपयोग करना संभव है mutate_at()
लेकिन मैं अभी यह नहीं जान पाया कि percent()
भाग में कॉलम नाम कैसे पारित करें । .
एक त्रुटि का उपयोग करना ।
यह बहुत सारे टाइपिंग के साथ काम करता है:
library(dplyr)
library(formattable)
df %>%
mutate(`Strongly agree` = color_bar("#DeF7E9")(formattable::percent(`Strongly agree`/100))) %>%
mutate(`Agree` = color_bar("#DeF7E9")(formattable::percent(`Agree`/100))) %>%
mutate(`Disagree` = color_bar("#DeF7E9")(formattable::percent(`Disagree`/100))) %>%
mutate(`Neither agree nor disagree` = color_bar("#DeF7E9")(formattable::percent(`Neither agree nor disagree`/100))) %>%
mutate(`Strongly disagree` = color_bar("#DeF7E9")(formattable::percent(`Strongly disagree`/100))) %>%
formattable(.,
align=c("l","l","l","l","l","l"),
`ethnicity` = formatter("span", style = ~ style(color = "grey", font.weight = "bold")))
यह काम नहीं करता है लेकिन इसमें सुधार किया जा सकता है:
df %>%
mutate_at(.vars = 2:6, .funs = color_bar("#DeF7E9")(formattable::percent(./100))) %>%
formattable(...)
इस "अजीब" संरचना के बारे में कुछ और जानकारी var = color_bar(...)(var)