library(dplyr)
sample.df <- data.frame(group.column = c("first_a","first_b","first_c","first_d",
"second_a","second_b","second_c","second_d",
"third_a","third_b","third_c","third_d"),
value.column.first = 1:12,
value.column.second = 13:24)
我创建了一个缓冲区列,并尝试了下面的代码,但没有用。
sample.df %>% mutate(buffer = `group.column` %>% strsplit(split="_") %>% lapply(function(x) {x[1]}) %>% unlist) %>% group_by(buffer) %>% t %>% rbind
我想要这张 table
我应该做什么?
最佳答案
分隔
您的组列,并使用pivot_wider
:
library(tidyr)
library(dplyr)
sample.df %>%
separate(group.column, into = c("A header", "name")) %>%
pivot_wider(values_from = c(value.column.first, value.column.second),
names_glue = "{name}.{match(.value, unique(.value))}",
names_vary = "slowest")
# A tibble: 3 × 9
`A header` a.1 a.2 b.1 b.2 c.1 c.2 d.1 d.2
<chr> <int> <int> <int> <int> <int> <int> <int> <int>
1 first 1 13 2 14 3 15 4 16
2 second 5 17 6 18 7 19 8 20
3 third 9 21 10 22 11 23 12 24
说明:
separate
将 group.column 字符串分为两列,一列称为A header
,其中包含第一部分(第一、第二、第三),另一列称为名称
与a、b、c...
。我将其称为name
,因为这是pivot_wider
中names_from
参数的默认值。- 在
pivot_wider
中,名称取自name
,值取自值列。列的名称由name
值 (a, b, c) 组成,而match(.value, unique(.value))
是获取2 个.value
列中每一列的位置。names_vary = "slowest"
用于使列顺序正确。
关于r - 如何对数据帧进行分组,然后在 R 中转置和 rbind 组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75081806/