【发布时间】:2021-09-09 05:48:14
【问题描述】:
我需要获取一组从长格式到宽格式的数据,显示计数和相对百分比。下面是一些与我的情况类似的虚拟数据:
df <-tibble::tribble(
~YEAR, ~Volunteers, ~retained, ~n, ~Rel.Percentage,
2016, "LA", "N", 51, "7%",
2016, "LA", "Y", 685, "93%",
2017, "Victorville", "N", 12, "16%",
2017, "Victorville", "Y", 66, "84%",
2018, "Inland Empire", "N", 33, "13%",
2018, "Inland Empire", "Y", 227, "87%",
2019, "Kern County", "N", 5, "7%",
2019, "Kern County", "Y", 69, "93%",
2020, "Military", "N", 61, "20%",
2020, "Military", "Y", 243, "80%",
2017, "LA", "N", 59, "7%",
2017, "LA", "Y", 645, "93%",
2016, "Victorville", "N", 15, "16%",
2016, "Victorville", "Y", 64, "84%",
2019, "Inland Empire", "N", 32, "13%",
2019, "Inland Empire", "Y", 221, "87%",
2017, "Kern County", "N", 7, "7%",
2017, "Kern County", "Y", 73, "93%",
2016, "Military", "N", 63, "20%",
2016, "Military", "Y", 241, "80%"
)
wide.test <-df %>%
pivot_wider(names_from = YEAR, values_from = c(`Rel.Percentage`) )
这给出了一个带有 NA 的偏移表,但我希望数字和相对百分比并排显示。
new.wide <-df[, !(names(df) %in% c("n"))] %>%
pivot_wider(names_from = YEAR, values_from = `Rel.Percentage`)
这给了我一个更整洁的百分比表,但不显示 n
我也试过了:
newer.wide <-df %>%
pivot_wider(names_from = YEAR, values_from = c(`Rel.Percentage`, n) )
但这个解决方案的问题是 n 现在位于它们自己的列集上,这使得这在很大程度上难以理解。如果可能的话,我希望将这些数字与它们的相对百分比放在一起,在括号中显示相对百分比旁边的基础数字。
【问题讨论】:
-
不确定您是否已经将您的数据作为
tribble,但如果您只是为这个示例制作了它,请查看dput函数,它会打印您的数据,以便任何人都可以复制粘贴它。 -
我的错,我只是为了这个例子。数据最初是一个数据框,你认为我应该转换它还是保留它的格式? tbh 我将在创建此宽格式后立即将其导出到 LaTeX 文件中
-
好吧,我的意思更多是为了方便您。
dput生成一个字符串,您可以将其复制粘贴到您的问题中。然后任何人都可以将其复制到他们的R会话中。我个人更喜欢tibble而不是data.frame。打印更干净,并且具有其他功能,例如nesting(请参阅tidyr::nest)。如果您正在制作 LaTeX 表格,我建议您查看xtable包。这旨在将 R 中的数据转换为 LaTeX 中的表格。 -
谢谢你,我会考虑使用 tibbles!
标签: r dataframe data-manipulation