【发布时间】:2021-02-10 21:40:11
【问题描述】:
我有一个超过 3000 个 obs 的数据框。看起来像这样:
dat <- data.frame(
letter = rep(c("A", "B", "C"), each=4),
numbers = rep(seq(1,1.75, by=0.25), 3)
)
dat
# letter numbers
# 1 A 1.00
# 2 A 1.25
# 3 A 1.50
# 4 A 1.75
# 5 B 1.00
# 6 B 1.25
# 7 B 1.50
# 8 B 1.75
# 9 C 1.00
# 10 C 1.25
# 11 C 1.50
# 12 C 1.75
我想重新排列这个数据框,使其看起来像:
# A B C
# 1 1.00 1.00 1.00
# 2 1.25 1.25 1.25
# 3 1.50 1.50 1.50
# 4 1.75 1.75 1.75
无需手动对所有 3,000 个观察值进行硬编码。
在我迄今为止尝试过的所有工具中(可能是错误的)(reshape、split、group_split、mutate %>% split %>% unnest、pivot_wider 和 dcast)split 提供了最接近我的输出试图实现(见下文),但我不确定如何索引嵌套在数据框中的数据框的特定列,并且我不确定如何在不加入它们的情况下重新组合各个数据框,即我想保留所有每个字母下的值相互独立。
spldf <- split(dat, dat$letter)
spldf
# $A
# letter numbers
# 1 A 1.00
# 2 A 1.25
# 3 A 1.50
# 4 A 1.75
#
# $B
# letter numbers
# 5 B 1.00
# 6 B 1.25
# 7 B 1.50
# 8 B 1.75
#
# $C
# letter numbers
# 9 C 1.00
# 10 C 1.25
# 11 C 1.50
# 12 C 1.75
我一直在浏览 S.O. 2天了,还没有看到一个足够相似的问题让我复制它。感谢您对这个问题的任何帮助!
【问题讨论】:
标签: r