我看过很多关于arrange()
问题的帖子,但是没有一个能解决我的问题,希望这不是重复的。我有一些名为**“Q1”,“Q2”,“Q3”**等等的列。在计算了rstatix::get_summary_stats()
的一些基本描述性统计数据之后,我需要将新列variable
按 * 升序 * 排列(例如,Q1在Q2之前,Q3之前,等等)。我敢肯定这是一个愚蠢的问题,但我看不出我做错了什么。
- 原始数据如下所示:
ID Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15
1 PART1 4 1 1 5 5 5 1 5 1 1 3 5 5 1 5
2 PART2 5 4 1 5 5 4 1 5 2 1 3 5 4 1 5
3 PART3 2 4 3 5 5 4 1 5 2 1 3 5 4 1 5
so on...
- 我的尝试:
descriptive <- data %>%
rstatix::get_summary_stats(show = c("mean", "sd", "median", "iqr", "min", "max")) %>%
mutate_if(is.numeric, round, 2) %>%
dplyr::arrange(variable)
- 前10行:
A tibble: 15 x 8
variable n mean sd median iqr min max
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Q1 63 3.94 1.03 4 2 2 5
2 Q10 63 1.84 0.88 2 2 1 3
3 Q11 63 2.62 1.31 3 3 1 5
4 Q12 63 3.98 1.01 4 2 2 5
5 Q13 63 4.33 0.8 5 1 2 5
6 Q14 63 1.91 0.88 2 2 1 4
7 Q15 63 4.25 0.95 5 1 2 5
8 Q2 63 2.86 1.58 3 3 1 5
9 Q3 63 1.97 1.06 2 2 1 4
10 Q4 63 3.98 1.04 4 2 2 5
注:我已经尝试了ungroup()
和across(starts_with("Q*")))
,但没有工作。任何想法将不胜感激,谢谢在adv.
- 数据:
> dput(descriptive)[1:10, ]
structure(list(variable = c("Q1", "Q10", "Q11", "Q12", "Q13",
"Q14", "Q15", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9"),
n = c(63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
63, 63), mean = c(3.94, 1.84, 2.62, 3.98, 4.33, 1.91, 4.25,
2.86, 1.97, 3.98, 4.21, 4.05, 2.38, 4.03, 2.25), sd = c(1.03,
0.88, 1.31, 1.01, 0.8, 0.88, 0.95, 1.58, 1.06, 1.04, 0.94,
1.04, 1.36, 1.05, 1.12), median = c(4, 2, 3, 4, 5, 2, 5,
3, 2, 4, 4, 4, 2, 4, 2), iqr = c(2, 2, 3, 2, 1, 2, 1, 3,
2, 2, 1, 2, 2.5, 2, 2), min = c(2, 1, 1, 2, 2, 1, 2, 1, 1,
2, 2, 1, 1, 2, 1), max = c(5, 3, 5, 5, 5, 4, 5, 5, 4, 5,
5, 5, 5, 5, 5)), row.names = c(NA, -15L), class = c("tbl_df",
"tbl", "data.frame"))
3条答案
按热度按时间kwvwclae1#
只在
variable
的整数部分使用arrange()
怎么样?输出:
vltsax252#
我们可以使用
mixedorder
,即使值具有不同的前缀,它也可以工作或使用
parse_number
ktecyv1j3#
已经有更好的灵魂了。只是为了好玩:
我们可以用正则表达式
(?<=[A-Za-z])(?=[0-9])
拆分variable
列,然后排列: