我有一个包含两列的数据框。第一列包含组,第二列包含值。
我希望每个分组都是一列,并且我希望所有关联的值都位于相应的列下。
我更喜欢 tidyverse 解决方案。如果可能的话,我更喜欢一种自动获取每个组并创建一个新列并在其下包含适当值的解决方案。我不想手动输入标题。
这就是我所拥有的:
df <- data.frame(Group = c("A", "A", "A", "B", "B", "B"),
Value = c(2,2,2,3,3,3))
df$Group <- as.character(df$Group)
这就是我想要的:
want <- data.frame(A = c(2,2,2),
B = c(3,3,3))
最佳答案
使用tidyverse
,我们可以在按“Group”创建序列列后使用pivot_wider
library(dplyr)
library(tidyr)
df %>%
group_by(Group) %>%
mutate(rn = row_number()) %>%
pivot_wider(names_from = Group, values_from = Value) %>%
select(-rn)
# A tibble: 3 x 2
# A B
# <dbl> <dbl>
#1 2 3
#2 2 3
#3 2 3
在base R
中,它可以是unstack
unstack(df, Value ~ Group)
或者使用data.table
library(data.table)
dcast(setDT(df), rowid(Group) ~ Group, value.var = 'Value')[, .(A, B)]
关于r - 我有一个包含多个组的专栏。我希望每个组都有自己的专栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59112100/