gpt4 book ai didi

reshape R : split a column

转载 作者:行者123 更新时间:2023-12-04 23:54:39 25 4
gpt4 key购买 nike

一个非常简单的问题,但我找不到解决方案:
我有一个类似

V1 <- c("A","A","B","B","C","C")
V2 <- c("D","D","E","E","F","F")
V3 <- c(10:15)
df <- data.frame(cbind(V1,V2,V3))
的 data.frame
V1 V2 V3
A D 10
A D 11
B E 12
B E 13
C F 14
C F 15
我想要
V1 V2 V3.1 V3.2
A D 10 11
B E 12 13
C F 14 15
我尝试 reshape{stats} 和 reshape2

最佳答案

正如我所提到的,您所需要的只是一个“时间”变量,您应该没问题。

Mark Miller 展示了基本的 R 方法,并手动创建了时间变量。

这是一种自动创建时间变量的方法,以及 dcast 的等效命令来自“reshape2”包:

## Creating the "time" variable. This does not depend
## on the rows being in a particular order before
## assigning the variables
df <- within(df, {
A <- do.call(paste, df[1:2])
time <- ave(A, A, FUN = seq_along)
rm(A)
})

## This is the "reshaping" step
library(reshape2)
dcast(df, V1 + V2 ~ time, value.var = "V3")
# V1 V2 1 2
# 1 A D 10 11
# 2 B E 12 13
# 3 C F 14 15

自我推销提醒

由于此类问题已多次出现,而且许多数据集并不总是具有唯一 ID,因此我将上述变体实现为名为 getanID 的函数。在我的“splitstackshape”包中。在目前的版本中,它将“时间”变量的名称硬编码为“.id”。如果您正在使用它,步骤将是:
library(splitstackshape)
library(reshape2)
df <- getanID(df, id.vars=c("V1", "V2"))
dcast(df, V1 + V2 ~ .id, value.var = "V3")

关于 reshape R : split a column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18687081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com